#include<stdio.h> #include<stdlib.h> #define max 10 #define lmax 1000 typedef int element; typedef struct //定义栈 的结构体 { element *base; //栈底 element *top; //栈顶 element size; //储存 }st; void initstack(st *s) //栈的初始化 { s->base=(element *)malloc(lmax*sizeof(element)); s->top=s->base; s->size=lmax; } void push(st *s,char str) //进栈 { int t1,t2; if(str>='0'&&str<='9') //如果是数字,直接进栈 { (*s->top++)=str-'0'; //字符转化成整形数据 } else { if(str=='+') { t1=*--s->top; //输出栈顶元素 t2=*--s->top; //再次输出栈顶元素 (*s->top++)=t1+t2; //后输入的与先输入的相加 } else if(str=='-') { t1=*--s->top; //输出栈顶元素 t2=*--s->top; //再次输出栈顶元素 (*s->top++)=t2-t1; //后输入的与先输入的相减 } else if(str=='*') { t1=*--s->top; //输出栈顶元素 t2=*--s->top; //再次输出栈顶元素 (*s->top++)=t1*t2; //后输入的与先输入的相乘 } else if(str=='/') { t1=*--s->top; //输出栈顶元素 t2=*--s->top; //再次输出栈顶元素 (*s->top++)=t2/t1; //后输入的与先输入的相除 } } } void put(st *s) { while(s->top>s->base) { printf("%d\n",*--s->top); //输出最终结果 } } int main() { char str; st s; initstack(&s); while(scanf("%c",&str)!=NULL&&str!='#') { push(&s,str); } put(&s); return 0; }
转载于:https://www.cnblogs.com/CCCrunner/p/6444635.html
相关资源:后缀表达式转换求值 数据结构