如题,这是对于顺序栈的一个简单的应用。执行的大致思路是从键盘读入一串表达式,不含换行,用“#”结束。执行时,将表达式里的数字和操作符字符放在两个不同的栈里。当读入的操作符的运算优先级大于栈顶的操作符时(定义#的运算优先级最低),先读入其后的数字,再将刚读入的数字,前一个读入的数字,操作符从栈中取出,将运算结果放入数字栈中,继续读入。
代码:
#include<stdio.h>
#include<stdlib.h>
#define N 100
typedef struct{
int num[N];
char ch[N];
int top;
}SeqStack;
char GetTopChar(SeqStack *s)//取栈顶元素
{
if(s->top==-1)
exit(1);
else
return s->ch[s->top];
}
int GetTopNum(SeqStack *s)
{
if(s->top==-1)
exit(1);
else
return s->num[s->top];
}
void PushNum(SeqStack *s,char x)//入栈
{
if(s->top==N-1)
exit(1);
s->top++;
s->num[s->top]=x-'0';
return;
}
void PushChar(SeqStack *s,char x)
{
if(s->top==N-1)
exit(1);
s->top++;
s->ch[s->top