Assignment 3
Assignment 3
CODE:
#include <iostream>
#include <stack>
#include <string>
class Node {
public:
T data;
Node* next;
Node(T value)
this->data=value;
this->next=NULL;
};
class Stack {
private:
Node<T>* top;
public:
Stack();
~Stack();
T pop();
T peek();
bool isEmpty();
};
//Stack<T>::Stack() : top(NULL) {}
Stack<T>::Stack()
top=NULL;
Stack<T>::~Stack() {
Node<T>* p = top;
while (top) {
top = top->next;
delete p;
p = top;
void Stack<T>::push(T x) {
t->next = top;
top = t;
T Stack<T>::pop() {
if (isEmpty()) {
return T(); // Return default value for simplicity; you may handle underflow differently
Node<T>* p = top;
T x = p->data;
top = top->next;
delete p;
return x;
T Stack<T>::peek() {
if (isEmpty()) {
return T(); // Return default value for simplicity; you may handle empty stack differently
return top->data;
bool Stack<T>::isEmpty() {
return 1;
return 2;
}
return 0;
bool isOperand(char c) {
return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
Stack<char> operatorStack;
char c = infix[i];
if (isOperand(c)) {
postfix += c;
} else if (c == '(') {
operatorStack.push(c);
} else if (c == ')') {
postfix += operatorStack.pop();
} else {
postfix += operatorStack.pop();
operatorStack.push(c);
while (!operatorStack.isEmpty()) {
postfix += operatorStack.pop();
return postfix;
Stack<int> operandStack;
char c = postfix[i];
if (isOperand(c)) {
operandStack.push(c - '0');
} else {
switch (c) {
default: break;
return operandStack.pop();
class TreeNode {
public:
char data;
TreeNode* left;
TreeNode* right;
TreeNode(char value)
data=value;
left=NULL;
right=NULL;
};
Stack<TreeNode*> treeStack;
char c = postfix[i];
if (isOperand(c)) {
treeStack.push(node);
} else {
node->right = operand2;
node->left = operand1;
treeStack.push(node);
}
return treeStack.pop();
if (root) {
result += root->data;
prefixFromTree(root->left, result);
prefixFromTree(root->right, result);
prefixFromTree(root, result);
return result;
int main() {
cout << "Result of Postfix Expression: " << resultPostfix << endl;
cout << "Prefix Expression from Tree: " << prefixFromTreeResult << endl;
return 0;
OUTPUT :