实验内容:算术表达式求值
表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。
实验要求:
(1)从键盘输入任意一个语法正确的(中缀)表达式,显示并保存该表达式。
(2)利用栈结构,把上述(中缀)表达式转换成后缀表达式,并显示栈的状态变化过程和所得到的后缀表达式。
(3)利用栈结构,对上述后缀表达式进行求值,并显示栈的状态变化过程和最终结果。
#include <iostream>
#include <cstdlib>
using namespace std;
const int N =100;
char input[N]; //中缀表达式数组
char result[N]; //后缀表达式数组
struct stack //char数据类型栈
{
int top;
char data[N];
};
stack op; //定义运算符栈
void printop() //打印运算符栈中的元素
{
cout <<"运算符栈中元素为:";
for(int k =N-1;k >=op.top;k--)
cout <<op.data[k] <<" ";
cout <<endl;
}
void makenull(stack &s) //置空
{
s.top =N;
}
bool empty(stack s) //判空
{
if(s.top >=N)
return true;
else
return false;
}
char top(stack s) //栈顶元素
{
if(empty(s))
return NULL;
else
return (s.data[s.top]);
}
void pop(stack &s) //弹栈
{
s.top += 1;
printop();
}
void push(char x,stack &s) //压栈
{
s.top -= 1;
s.data[s.top] =x;
printop();
}
struct num //double数据类型栈
{
int top;
double data[N];
};
num value; //定义运算结果栈
void printvalue() //打印运算结果栈中的元素
{
cout <<"运算结果栈中元素为:";
for(int k =N-1;k >=value.top;k--)
cout <<value.data[k] <<" ";
cout <<endl;
}
void makenull
实验一 线性表及其应用 算术表达式求值
最新推荐文章于 2019-08-27 17:28:00 发布
本文介绍了线性表的应用,重点探讨了如何使用线性表进行中缀表达式到后缀表达式的转换,并详细阐述了后缀表达式在计算算术表达式中的价值和步骤。

最低0.47元/天 解锁文章
469

被折叠的 条评论
为什么被折叠?



