没有合适的资源?快使用搜索试试~ 我知道了~
算术表达式求值(c++)数据结构实验.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 190 浏览量
2021-11-16
18:56:22
上传
评论
收藏 32KB PDF 举报
温馨提示
试读
2页
算术表达式求值(c++)数据结构实验.pdf
资源推荐
资源详情
资源评论
数据结构实验报告
实验名称 : 实验 2 栈和队列及其应用
实验目的 :通过上机实验,加深理解栈和队列的特性;能根据实际问题的需要灵活运用栈和队列;
掌握栈和队列的应用。
实验内容 :(2 选 1)内容 1:算术表达式求值问题;内容 2:航空客运订票系统。
实验要求: 1)在 C++系统中编程实现; 2)至少实现两种以上操作算法; 3)写出算法设计的基本原
理或画出流程图; 4)算法实现代码简洁明了;关键语句要有注释; 5)给出调试和测试
结果; 6)完成实验报告。
实验步骤 :
(1) 算法设计
为了实现算符优先算法。 可以使用两个工作栈。 一个称为 OPTR,用以寄存运算符, 另一个称做 OPND,
用以寄存操作数或运算结果。
1. 首先置操作数栈为空栈,表达式起始符” #”为运算符栈的栈底元素;
2. 依次读入表达式,若是操作符即进 OPND栈,若是运算符则和 OPTR栈的栈顶运算符比较优先权后
作相应的操作,直至整个表达式求值完毕(即 OPTR栈的栈顶元素和当前读入的字符均
为” #”)。
(2) 算法实现
typedef struct{ int stacksize; char *base; char *top;
} Stack;
typedef struct{ int stacksize; int *base; int *top; } Stack2;
int InitStack(Stack *s) // 构造运算符栈
{ s->base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
if(!s->base) return ERROR;
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
return OK; }
int InitStack2(Stack2 *s) // 构造操作数栈
{ s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s->base) return ERROR;
s->stacksize=STACK_INIT_SIZE;
s->top=s->base;
return OK; }
int In(char ch) // 判断字符是否是运算符,运算符即返回 1
{ return(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='#'); }
int Push(Stack *s,char ch) // 运算符栈插入 ch 为新的栈顶元素 {
*s->top=ch; s->top++; return 0; }
int Push2(Stack2 *s,int ch)// 操作数栈插入 ch 为新的栈顶元素
{ *s->top=ch; s->top++; return 0; }
char Pop(Stack *s) // 删除运算符栈 s 的栈顶元素,用 p 返回其值
{ char p;s->top--; p=*s->top; return p;}
int Pop2(Stack2 *s) // 删除操作数栈 s 的栈顶元素,用 p 返回其值
{ int p;s->top--; p=*s->top; return p;}
char GetTop(Stack s) // 用 p 返回运算符栈 s 的栈顶元素
资源评论
霖落^0^时空
- 粉丝: 3
- 资源: 9万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- vscode配置c/c 环境教程
- vscode配置c/c 环境教程
- 基于matlab实现电磁优化计算功能,进行线型规划优化电磁设计.rar
- 基于matlab实现带精英策略的非支配排序遗传算法matlab 源码.rar
- 基于matlab实现差分进化算法,最新的用于替代遗传算法,是以后的主要发展方法.rar
- VSCode配置c/c++环境教程.md
- 基于matlab实现标准合作型协同进化遗传算法matlab源程序
- 七下人教.zip
- 基于matlab实现本份代码能对图像进行gabor滤波处理,结合指纹方向图以及指纹沟壑频率特性,对指纹图像进行增强.rar
- 基于matlab实现RBM神经网络实现了手写数字体识别的GUI程序.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功