收藏 分享(赏)

算术表达式求值(c++)数据结构实验.doc

上传人:精品资料 文档编号:10166649 上传时间:2019-10-15 格式:DOC 页数:2 大小:37KB
下载 相关 举报
算术表达式求值(c++)数据结构实验.doc_第1页
第1页 / 共2页
算术表达式求值(c++)数据结构实验.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、数据结构实验报告实验名称: 实验 2 栈和队列及其应用实验目的:通过上机实验,加深理解栈和队列的特性;能根据实际问题的需要灵活运用栈和队列;掌握栈和队列的应用。实验内容:(2 选 1)内容 1:算术表达式求值问题;内容 2:航空客运订票系统。实验要求:1)在 C+系统中编程实现;2)至少实现两种以上操作算法;3)写出算法设计的基本原理或画出流程图;4)算法实现代码简洁明了;关键语句要有注释;5)给出调试和测试结果;6)完成实验报告。 实验步骤: (1)算法设计为了实现算符优先算法。可以使用两个工作栈。一个称为 OPTR,用以寄存运算符,另一个称做OPND,用以寄存操作数或运算结果。1.首先置操

2、作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;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 *)ma

3、lloc(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) /判断字符是否

4、是运算符,运算符即返回 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(Stac

5、k2 *s) /删除操作数栈 s 的栈顶元素,用 p 返回其值 int p;s-top-; p=*s-top; return p;char GetTop(Stack s) /用 p 返回运算符栈 s 的栈顶元素 char p=*(s.top-1); return p; int GetTop2(Stack2 s) /用 p 返回操作数栈 s 的栈顶元素 int p=*(s.top-1); return p; char Precede(char c1,char c2) int i=0,j=0; static char array49=, , , , , , , , , , , , , , , , , , , , , , , , !, , , : theta=Pop( b=Pop2( a=Pop2( Push2(break; return GetTop2(OPND); 实验结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报