实验内容:算术表达式求值 表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。 实验要求: (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(num &v) //置空 { v.top =N; } bool empty(num v) //判空 { i
实验一 线性表及其应用 算术表达式求值
最新推荐文章于 2019-08-27 17:28:00 发布
本文介绍了线性表的应用,重点探讨了如何使用线性表进行中缀表达式到后缀表达式的转换,并详细阐述了后缀表达式在计算算术表达式中的价值和步骤。
摘要由CSDN通过智能技术生成