栈之后缀式求值
来源:互联网 发布:淘宝女包货源免费代理 编辑:程序博客网 时间:2024/06/05 07:45
题目描述
输入
输出
示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxsize 1000
#define sizenum 1000
typedef int element;
typedef struct
{
element*top;
element*base;
int stsize;
}sq;
int intistack(sq*s)
{
s->base=(element*)malloc(maxsize*sizeof(element));
if(!s->base)
return -1;
s->top=s->base;
s->stsize=maxsize;
return 0;
}
int push(sq*s,char *t)
{
if(s->top-s->base>s->stsize)
{
s->base=(element*)realloc(s->base,(s->stsize+sizenum)*sizeof(element));
if(!s->base)
return -1;
s->top=s->base+s->stsize;
s->stsize+=sizenum;
}
*(++s->top)=*t-'0';
return 0;
}
void chuli(sq*s,char a[])
{
int i,len=strlen(a);
for(i=0;i<=len-1;i++)
{ if(a[i]=='#')
break;
if('0'<=a[i]&&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()
{
char a[maxsize];
sq s;
while(gets(a)!=NULL)
{
intistack(&s);
chuli(&s,a);
}
return 0;
}
//读到数字则进栈读到运算符对栈顶两元素运算赋给*(s->top-1),然后栈顶出栈
- 栈之后缀式求值
- SDUT2133数据结构实验之栈三:后缀式求值(栈)
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- SDUT 2133 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- SDUT 2133 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- SDUT 3133 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值 SDUT 2133
- Jodd 工具包之StringUtil
- python语言基础-入门笔记1
- Fiddler中session的请求/响应类型与图标对照表
- RtcHttpServer 服务端应用
- Retrofit2 完全解析 探索与okhttp之间的关系(二)
- 栈之后缀式求值
- java-基础-hashcode()及其优化
- 设计模式-策略模式
- 哈希表
- hdu 5734 LIS变形
- 关于js中函数的执行顺序
- Qt-单例模式
- poj1113四舍五入的问题
- ListView 与CheckBox 触发事件冲突解决