Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <string.h>
- #define TYPE int
- #define MAXSIZE 200
- typedef struct Stack
- {
- int top;
- TYPE data[MAXSIZE];
- } Stack;
- void reset(Stack *s);
- int isEmpty(Stack *s);
- int isFull(Stack *s);
- void push(Stack *s,TYPE val);
- TYPE pop(Stack *s);
- void display(Stack s);
- int chckop(char x);
- int main()
- {
- Stack s;
- reset(&s);
- int i;
- char x[100];
- scanf("%s",x);
- for(i=0;i<strlen(x);i++) {
- if(isalnum(x[i])) {
- push(&s,x[i]-48);
- } else {
- int x1;
- int x2;
- x1=pop(&s);
- x2=pop(&s);
- if(chckop(x[i])==1) push(&s,x1+x2);
- else if(chckop(x[i])==2) push(&s,x1-x2);
- else if(chckop(x[i])==3) push(&s,x1*x2);
- else if(chckop(x[i])==4) push(&s,x1/x2);
- }
- }
- printf("%d",s.data[s.top]);
- return 0;
- }
- int chckop(char x) {
- if(x=='+') return 1;
- if(x=='-') return 2;
- if(x=='*') return 3;
- if(x=='/') return 4;
- return 0;
- }
- void reset(Stack *s)
- {
- s->top = 0;
- }
- int isEmpty(Stack *s)
- {
- return s->top==0;
- }
- int isFull(Stack *s)
- {
- return s->top==MAXSIZE;
- }
- void push(Stack *s,TYPE val)
- {
- if(!isFull(s)) s->data[(s->top)++] = val;
- }
- TYPE pop(Stack *s)
- {
- return s->data[--(s->top)];
- }
- void display(Stack s)
- {
- while(!isEmpty(&s)) printf("[%d]\n", pop(&s));
- }
Advertisement
Add Comment
Please, Sign In to add comment