Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- #define STACKSIZE 10
- struct a_stack
- {
- int top = 0;
- int data[STACKSIZE];
- };
- bool is_full(struct a_stack);
- bool is_stack_empty(struct a_stack);
- void showstack(struct a_stack);
- void init(struct a_stack*);
- void push(struct a_stack*, int);
- int pop(struct a_stack*);
- int main()
- {
- struct a_stack my_stack;
- int i = 0;
- int x = 0;
- char expression[20] = "324121.";
- init(&my_stack);
- i = 0;
- while (expression[i] != '.')
- {
- switch (expression[i])
- {
- case '0': push(&my_stack, 0); break;
- case '1': push(&my_stack, 1); break;
- case '2': push(&my_stack, 2); break;
- case '3': push(&my_stack, 3); break;
- case '4': push(&my_stack, 4); break;
- case '5': push(&my_stack, 5); break;
- case '6': push(&my_stack, 6); break;
- case '7': push(&my_stack, 7); break;
- case '8': push(&my_stack, 8); break;
- case '9': push(&my_stack, 9); break;
- case '*' : push(&my_stack, pop(&my_stack) * pop(&my_stack)); break;
- case '/': push(&my_stack, pop(&my_stack) / pop(&my_stack)); break;
- case '+': push(&my_stack, pop(&my_stack) + pop(&my_stack)); break;
- case '-': push(&my_stack, pop(&my_stack) - pop(&my_stack)); break;
- default: std::cout << "Not Implemented expression "<< i << expression[i] << std::endl;
- }
- i++;
- }
- showstack(my_stack);
- //
- // result of computation should be at top of stack
- // pop result and print it so that the user knows.
- return 0;
- }
- int pop(struct a_stack* my_stack)
- {
- int x = 0;
- my_stack->top--;
- x = my_stack->data[my_stack->top];
- my_stack->data[my_stack->top] = -1;
- return x;
- }
- void push(struct a_stack* my_stack, int item)
- {
- my_stack->data[my_stack->top] = item;
- my_stack->top++;
- }
- void init(struct a_stack* my_stack)
- {
- my_stack->top = 0;
- }
- void showstack(struct a_stack my_stack)
- {
- cout << my_stack.top << " items " << endl;
- for (int i = 0; i < my_stack.top; i++)
- cout << i << " : " << my_stack.data[i] << endl;
- }
- bool is_stack_empty(struct a_stack my_stack)
- {
- if (my_stack.top == 0)
- return true;
- else
- return false;
- }
- bool is_full(struct a_stack my_stack)
- {
- if (my_stack.top > STACKSIZE - 1)
- return true;
- else
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement