数据结构实验之栈与队列三:后缀式求值
来源:互联网 发布:教我开淘宝店 编辑:程序博客网 时间:2024/06/05 07:16
Problem Description
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
Input
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
Output
求该后缀式所对应的算术表达式的值,并输出之。
Example Input
59*684/-3*+#
Example Output
57
Hint
基本操作数都是一位正整数!
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#define STACKINITSIZE 100#define STACKINCREMENT 10#define OVERFLOW -2#define ERROR -1#define OK 1typedef int SElemtype;typedef int Statu;typedef struct node{ SElemtype *base; SElemtype *top; int stacksize;}SqStack;Statu Check(SqStack &S, char c);Statu InitStack(SqStack &S);Statu Push(SqStack &S, SElemtype e);Statu Pop(SqStack &S, SElemtype &e);int main(){ char a; SqStack S; InitStack(S); while(scanf("%c", &a) && a != '#') { Check(S, a); } printf("%d\n", *S.base); return 0;}Statu InitStack(SqStack &S){ S.base = (SElemtype *)malloc(STACKINITSIZE * sizeof(SElemtype)); if(!S.base) exit(OVERFLOW); S.top = S.base; S.stacksize = STACKINITSIZE; return OK;}Statu Push(SqStack &S, SElemtype e){ if(S.top - S.base >= S.stacksize) { S.base = (SElemtype *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemtype)); if(!S.base) exit(OVERFLOW); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } * S.top++ = e; return OK;}Statu Pop(SqStack &S, SElemtype &e){ if(S.top == S.base) return ERROR; e = * -- S.top; return OK;}Statu Check(SqStack &S, char c){ int a, d; switch(c) { case '+':Pop(S, a);Pop(S, d);Push(S, a + d);break; case '-':Pop(S, a);Pop(S, d);Push(S, d - a);break; case '*':Pop(S, a);Pop(S, d);Push(S, a * d);break; case '/':Pop(S, a);Pop(S, d);Push(S, d / a);break; default:Push(S, c - '0'); } return OK;}
阅读全文
0 0
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 2133 数据结构实验之栈与队列三:后缀式求值
- 2133-数据结构实验之栈与队列三:后缀式求值
- ubuntu ssh客户端登录缓慢
- 利用js的trigger函数,模拟事件的自动触发
- js 数组 去重 代码
- phpcms 允许英文目录有空格并修改限制长度
- Java SE(六)—— 多线程
- 数据结构实验之栈与队列三:后缀式求值
- 7-7 六度空间(30 分)
- STM32学习之:定时器 软件计时
- Apache CommonsのBeanUtilsのcopyPropertiesの使い方
- 链队列
- Android的代码安全那些事
- 本地安装jekll环境
- hdoj 2028 Lowest Common Multiple Plus
- Spring Framework Overview