数据结构实验之栈三:后缀式求值
2016-08-05 10:16
183 查看
数据结构实验之栈三:后缀式求值
Time Limit: 1000MS Memory limit: 65536K
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxsize 10000
#define sizenum 10000
typedef struct
{
int *base;
int *top;
int stsize;
}Sq;
int stack_Init(Sq*s)//?????§????
{
s->base=(int *)malloc(maxsize*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base;
s->stsize=maxsize;
return 1;
}
void push(Sq*s,char *e)
{
if(s->top-s->base>s->stsize)
{
s->base=(int *)realloc(s->base,(s->stsize+sizenum)*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base+s->stsize;
s->stsize+=sizenum;
}
*++s->top=*e-'0';
}
void choose(Sq*s,char a[])
{
int i,len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]=='#')
break;
if(a[i]>='0'&&a[i]<='9')
push(s,&a[i]);
else
{
switch(a[i])
{
case'+':*(s->top-1)+=*(s->top);
break;
case'-':*(s->top-1)-=*(s->top);
break;
case'*':*(s->top-1)*=*(s->top);
break;
case'/':*(s->top-1)/=*(s->top);
break;
}
s->top--;
}
}
printf("%d\n",*(s->top));
}
int main()
{
Sq s;
char a[maxsize];
gets(a);
stack_Init(&s);
choose(&s,a);
return 0;
}
相关文章推荐
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值 (stack)
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- SDUT 2133 数据结构实验之栈三:后缀式求值
- SDUT 2133 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值