Question: #include #include using namespace std; const char SENTINEL = ';'; struct Node { int data; Node* link; }; class Stack { public : Stack(); //default

 #include #include using namespace std; const char SENTINEL = ';'; struct

#include

#include

using namespace std;

const char SENTINEL = ';';

struct Node

{

int data;

Node* link;

};

class Stack

{

public:

Stack(); //default constructor

//initializes the stack to an empty stack

bool isEmpty() const; //this is a const function, meaning it cannot change any of the member variables

//returns true if the stack is empty, false otherwise

int top() const; //this is a const function, meaning it cannot change any of the member variables

//returns the value at the top of stack, does not modify the stack, does not check if the stack is empty or not

void push(int data);

//adds data to the top of stack

void pop();

//removes the top value of stack, does not return it, does nothing if the stack is empty

private:

Node* stackTop; //pointer to the head of a linked list

void headInsert(int data);

//precondition: stackTop points to the beginning of a list, could be an empty list

//postcondition: a new node with data is added to the beginning of the list, and stackTop points to the new node

void headRemove();

//precondition: stackTop points to the beginning of a list, could be an empty list

//postcondition: the first node of the list is removed, and stackTop points to the next node

};

bool isOperator(char c);

//precondition: c is initialized

//postcondition: returns true if c is '+', '-', '*' or '/'

int calculate(int o1, int o2, char op);

//precondition: o1 and o2 are initialized and op is an operator

//postcondition: returns op(o1, o2), e.g. if op is '-' then returns o1-o2

int charToInt(char c);

//precondition: c is a digit

//postcondition: returns the integer value of c

int main()

{

char in, ans;

Stack operandStack;

cout

cin >> in;

while(in != SENTINEL)

{

if(isOperator(in))

{

//pop two numbers from stack

int n1, n2;

if(operandStack.isEmpty())

{

cout

exit(1);

}

n2 = operandStack.top();

operandStack.pop();

if(operandStack.isEmpty())

{

cout

exit(1);

}

n1 = operandStack.top();

operandStack.pop();

//push the result of calculation to the top of operandStack

operandStack.push(calculate(n1, n2, in));

}

else

{

//push the number to the top of opernadStack

/*your code here*/

}

cin >> in;

}

//pop a number from the top of stack

int res;

res = operandStack.top();

operandStack.pop();

if(operandStack.isEmpty()) /othing left in the stack

cout

else //there are still numbers in the stack

cout

return 0;

}

Stack::Stack()

{

/*your code here*/

}

void Stack::headInsert(int data)

{

/*your code here*/

}

void Stack::headRemove()

{

/*your code here*/

}

bool Stack::isEmpty() const

{

/*your code here*/

}

int Stack::top() const

{

/*your code here*/

}

void Stack::pop()

{

/*your code here*/

}

void Stack::push(int data)

{

/*your code here*/

}

bool isOperator(char c)

{

return c == '+' || c == '-' || c == '*' || c == '/';

}

int calculate(int o1, int o2, char op)

{

/*your code here*/

}

int charToInt(char c)

{

return (static_castint>(c) - static_castint>('0'));

}

Postfix notation, is a mathematical notation in which operators follow their operands; for instance, to add 3 and 4, one would write 3 4 rather than 3 4 (infix notation). If there are multiple operations, operators are given immediately after their second operands; so, the expression written 3-4+5 in conventional notation would be written 3 4- 5 in postfix notation: 4 is first subtracted from 3, then 5 is added to the result. An advantage of postfix notation is that it removes the need for parentheses that are required by infix notation. While 3 - 4 x 5 can also be written 3 - (4 x 5), which is different from (3 -4) x 5, in postfix notation, the former could be written 3 4 5 x-, while the latter could be written 3 4-5 x 0r 5 3 4-x (from Wikipedia) Stacks can be used to evaluate expressions in postfix notations by following these steps: If a number is typed, push it on the stack. If an operation is typed, pop off two numbers from the stack, perform the operation, and push the result back on the stack. You should complete the Stack class and other functions in the template file (found on Carmen) so that when the user enters an expression in postfix notation, the program calculates and shows the result. In this assignment the user enters one-digit numbers only, but the result can be any integer. Only basic operations (i.e. +,-, /, *) are entered by the user and integer division is used in calculations. User input ends with a semicolon Postfix notation, is a mathematical notation in which operators follow their operands; for instance, to add 3 and 4, one would write 3 4 rather than 3 4 (infix notation). If there are multiple operations, operators are given immediately after their second operands; so, the expression written 3-4+5 in conventional notation would be written 3 4- 5 in postfix notation: 4 is first subtracted from 3, then 5 is added to the result. An advantage of postfix notation is that it removes the need for parentheses that are required by infix notation. While 3 - 4 x 5 can also be written 3 - (4 x 5), which is different from (3 -4) x 5, in postfix notation, the former could be written 3 4 5 x-, while the latter could be written 3 4-5 x 0r 5 3 4-x (from Wikipedia) Stacks can be used to evaluate expressions in postfix notations by following these steps: If a number is typed, push it on the stack. If an operation is typed, pop off two numbers from the stack, perform the operation, and push the result back on the stack. You should complete the Stack class and other functions in the template file (found on Carmen) so that when the user enters an expression in postfix notation, the program calculates and shows the result. In this assignment the user enters one-digit numbers only, but the result can be any integer. Only basic operations (i.e. +,-, /, *) are entered by the user and integer division is used in calculations. User input ends with a semicolon

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!