以下为《实验2-栈与队列的应用实验报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
湖南应用***实验(训)报告
课程名称
数据结构与算法
课程代码
***04
成绩评定
学 院
信息***
专业
物联网工程
指导老师
聂某某
学生姓名
张宇
学号
***8
班级
物联20103
实验地点
实验楼101
实验日期
2021年 4月 7日
小组成员
无
实验类型
□演示性 □验证性 □综合性 设计研究 □其它
实验项目名称
栈与队列的应用
一、实验目的
1、掌握栈与队列的定义及实现;
2、掌握利用栈与队列求解算术表达式的方法。
二、实验主要仪器设备
1. 硬件:计算机
2. 软件:Windows 7,VC++6.0
三、实验内容及要求
将中缀表达式转化成后缀表达式存储在队列中,然后利用后缀表达式求表达式的值并输出。
将中缀表达式转化成后缀的思想:
1、创建一空队列,用来存放后缀表达式,建立并初始化操作符某某OPTR,将表达式起始符“#”压入OPTR栈。
2、依次读入表达式中每个字符ch,循环执行(3)至(5),直至求出整个表达式转换完毕。
3、取出OPTR的栈顶元素,当OPTR的栈顶元素和当前读入的字符ch均为“#”时,整个中缀表达式转换完毕。
4、若ch不是运算符,则进队,读入下一字符ch。
5、若ch是运算符,则根据OPTR的栈顶元素和ch的优先权比较结果,做不同的处理。
① 若是小于,则ch压入OPTR栈,读入下一字符ch。
② 若是大于,则弹出OPTR栈顶的运算符,进队。
③ 若是等于,则OPTR的栈顶元素是“(”且ch是“)”,这时弹出OPTR栈顶的“(”,相当于去掉括号,然后读入下一字符ch。
对后缀表达式进行计算的具体步骤为:
建立一个栈S从左到右读后缀表达式,读到数字就将它转换为数值压入栈S中,读到运算符则从栈中依次弹出两个数分别到Y和X,然后以“X运算符Y”的形式计算出结果,再压进栈S中。如果后缀表达式未读完,重复执行上面过程,最后输出栈顶的数值即可结束。
四、实验过程(包括算法流程图(或原理图、电路图)、程序源码、运行结果图等)
/
源代码:#include
#include
#include
#include
#include
#include
#define MAX 100
using namespace std;
//设置优先级(注意默认操作数的优先级最高,即其不需要进栈,进栈的都是运算符)
map p;
//一些初始化********************************************
struct Node{
double num;//操作数
char op;//操作符
bool flag;//true表示操作数,false表示操作符
};
typedef struct Node node;
stack s;//操作符某某
stack s1;//存放操作数的,为了计算后缀表达式的值
queue q;//后缀表达式队列
//******************************************************
//中缀转后缀函数
void change(string str){
node temp;
for (in 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 hile (!s1.empty()){//初始化栈s1
s1.pop();
}
double answer=calculate();
cout 请点击下方选择您需要的文档下载。
以上为《实验2-栈与队列的应用实验报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。