栈方式的后缀表达式求值,求助(输入的整数是大于10的)
#include"stdio.h"#define MAXLEN 100
typedef struct
{
int data[MAXLEN];
int top;
}SeqStack;
void InitStack (SeqStack *s)
{ // 构造一个空栈
s=new SeqStack;
s->top =-1;
}
int Push (SeqStack *s, int x)
{ // 插入元素x为新的栈顶元素,考虑溢出情况的发生
if (s->top==MAXLEN-1) return 0;
else
{ s->top++;
s->data[s->top] =x;
return 1;
}
}//push
int Pop (SeqStack *s) // 若栈不空,则删除st的栈顶元素,用x返回其值,
// 并返回1;否则返回0
{
int x;
if (s->top==-1) return 0;
else
{
x=s->data[s->top];
s->top--;
return x;
}
} //pop
main()
{
int p,a,b;
char ch;
int sum;
SeqStack *s=new SeqStack;
char str[50];
gets(str);
InitStack (s);
for(int i=0;str[i]!='\0';i++)
{
if( (p=str[i]-'0')>=0)
{ Push(s,p);
}
else if(str[i]=='+')
{
a=Pop(s);
b=Pop(s);
sum=a+b;
Push(s,sum);
}
else if(str[i]=='-')
{
a=Pop(s);
b=Pop(s);
sum=b-a;
Push(s,sum);
}
else if(str[i]=='*')
{
a=Pop(s);
b=Pop(s);
sum=b*a;
Push(s,sum);
}
else if(str[i]=='/')
{
a=Pop(s);
b=Pop(s);
sum=b/a;
Push(s,sum);
}
} printf("%d\n",sum);
}
以上的要求是输入的整数必须是0--9的,如果我想输入一个大于10的整数,我该怎样改进?