Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct element {
- int sym;
- struct element *p;
- };
- void addel(struct element **cur,int sym) {
- struct element *mem=malloc(sizeof(struct element));
- mem->sym=sym;
- mem->p=(*cur);
- (*cur)=mem;
- }
- int removeel(struct element **cur) {
- struct element *mem=(*cur)->p;
- int el=(*cur)->sym;
- free(*cur);
- (*cur)=mem;
- return el;
- }
- int main()
- {
- char exp[50];
- struct element *topn=NULL, *topo=NULL;
- int i=0,x1,x2,res;
- scanf("%s",&exp);
- while (exp[i]) {
- switch(exp[i]) {
- case '(': break;
- case '+':
- case '*':
- case '-':
- case '/':
- addel(&topo,(int)exp[i]); break;
- case ')':
- x1=removeel(&topn);
- x2=removeel(&topn);
- switch((char)removeel(&topo)) {
- case '+': res=x2+x1; break;
- case '*': res=x2*x1; break;
- case '-': res=x2-x1; break;
- case '/': res=x2/x1; break;
- }
- addel(&topn,res);
- break;
- default:
- addel(&topn,(int)exp[i]-48);
- break;
- }
- i++;
- }
- printf("%s",exp);
- printf("=%d",topn->sym);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement