数据结构实验之栈与队列三:后缀式求值
来源:互联网 发布:林书豪16赛季数据 编辑:程序博客网 时间:2024/06/10 09:46
数据结构实验之栈与队列三:后缀式求值
Problem Description
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
Input
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
Output
求该后缀式所对应的算术表达式的值,并输出之。
Example Input
59*684/-3*+#
Example Output
57
Hint
基本操作数都是一位正整数!
Author
#include <iostream>
#include<stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
#define maxsize 10000
#define numsize 10000
typedef int element;
typedef int status;
typedef struct
{
element *top;
element *base;
int stacksize;
}sqstack;
status initstack(sqstack &s)
{
s.base=(element *)malloc(maxsize * sizeof(element));
if(!s.base)return -1;
s.top=s.base;
s.stacksize=maxsize;
return 0;
}
void clearstack(sqstack &s)
{
s.top=s.base;
}
void push(sqstack &s,element e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(element *)realloc(s.base,maxsize+numsize*sizeof(element));
s.top=s.base+maxsize;
s.stacksize+=numsize;
}
*(s.top)=e;
s.top++;
}
void pop(sqstack &s)
{
s.top--;
}
element get(sqstack &s)
{
element e;
e=*(s.top-1);
s.top--;
return e;
}
status emptystack(sqstack &s)
{
if(s.base==s.top)
return 1;
else
return 0;
}
void putstack(sqstack &s)
{
while(s.top>s.base)
{
printf("%d",*(s.top-1));
s.top--;
}
}
void suan(sqstack &s,element c)
{
int sum=0;
if(c<='9'&&c>='0')
push(s,c-48);
else
{
if(c=='*')
{
int a,b;sum=0;
a=*(s.top-1);
s.top--;
b=*(s.top-1);
s.top--;
sum=b*a;
push(s,sum);
}
if(c=='+')
{
int a,b;sum=0;
a=*(s.top-1);
s.top--;
b=*(s.top-1);
s.top--;
sum=a+b;
push(s,sum);
}
if(c=='-')
{
int a,b;sum=0;
a=*(s.top-1);
s.top--;
b=*(s.top-1);
s.top--;
sum=b-a;
push(s,sum);
}
if(c=='/')
{
int a,b;sum=0;
a=*(s.top-1);
s.top--;
b=*(s.top-1);
s.top--;
sum=b/a;
push(s,sum);
}
}
}
int main()
{
sqstack s;
initstack(s);
char c;
while(~scanf("%c",&c)&&c!='#')
{
suan(s,c);
}
printf("%d\n",*(s.top-1));
return 0;
}
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 数据结构实验之栈与队列三:后缀式求值
- 2133 数据结构实验之栈与队列三:后缀式求值
- 2133-数据结构实验之栈与队列三:后缀式求值
- Android 学习笔记(三):ListView的使用
- 实验三:栈和队列的基本操作实现及其应用——顺序栈
- HDU 1027 Ignatius and the Princess II
- VS2013下SSBA库配置
- 堆
- 数据结构实验之栈与队列三:后缀式求值
- 洛谷 P2587 [ZJOI2008]泡泡堂(贪心)
- Firefox-57.0b8 编译日志
- Spring Boot属性文件application.properties配置文档(全部)
- Xilinx FPGA 学习笔记——时钟资源
- Lucene-基础篇
- 《TensorFlow实战实例》的一些错误更正ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named a
- Android 爱好调查页面
- Qt问题记录之cannot include corecrt.h