1 / 9
文档名称:

《数据结构与算法分析》课程设计报告.doc

格式:doc   大小:49KB   页数:9
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《数据结构与算法分析》课程设计报告.doc

上传人:文库旗舰店 2019/7/13 文件大小:49 KB

下载得到文件列表

《数据结构与算法分析》课程设计报告.doc

文档介绍

文档介绍:《数据结构与算法分析》课程设计报告课题名称:带括号的算术表达式求值 课题负责人名(学号):XXXXXXX 同组成员名单(角色):XX 指导教师:XXXXX 评阅成绩: 评阅意见: 提交报告时间:2006年11月7日带括号的算术表达式求值软件工程专业学生:XX指导老师:XX[摘要]栈(Stack)是一种最常用和最重要的数据结构,它的用途非常广泛,例如,汇编处理程序中的句法识别和表达式计算就是基于栈实现的。栈还经常使用在函数调用时的参数传递和函数值的返回方面。其主要属性是由支配其元素的插入与删除的规则来决定的,被删除或移去的元素只能是最后插入的,即所谓具有后进先出(LIFO)性质或规范。许多计算机系统把栈做成其电路,并有操作这种硬件栈的机器指令。子例程的调用和返回序列都服从栈协议。算术表达式的求值都是通过对栈的操作序列来实现的。很多手持计算器都是用栈方式来操作的。在学习计算机科学时,将能看到许多栈的例子。关键词:栈结点模板类下面是一个运用数据结构中的栈编写的一个比较简单的计算器程序,可以执行带括号的算数表达式运算,通过这个表达式,我们可以更清楚的了解和掌握栈的具体运用。//程序一://功能:链式栈的模板类定义及其实现文件#ifndefSTACK_H#defineSTACK_H#include<>template<classType>classStack;//链式栈结点类定义template<classType>classStackNode{friendclassStack<Type>;private:Typedata;//结点数据域StackNode<Type>*link;//结点链域StackNode(Typed=0,StackNode<Type>*l=NULL):data(d),link(l){}//构造函数};//链式栈模板类定义template<classType>classStack{public:Stack():top(NULL){}~Stack();voidPush(constType&item);TypePop();TypeGetTop();voidMakeEmpty();intIsEmpty()const{returntop==NULL;}private:StackNode<Type>*top;//栈顶指针,即链头指针};//链式栈模板类的实现template<classType>Stack<Type>::~Stack()//析构函数,前不允许带任何返回类型{ StackNode<Type>*p;while(top!=NULL)//逐次删去链式栈中的元素直至栈顶指针为空 { p=top;top=top->link;deletep; }}template<classType>Stack<Type>::Push(constType&item)//压栈,将元素值item插入到栈顶{ top=newStackNode<Type>(item,top);//创建新的含item的结点,其链指针指向top}template<classType>TypeStack<Type>::Pop()//退栈,即删除栈顶结点并返回被删元素值{assert(!IsEmpty());//断言:若栈不空则继续执行StackNode<Type>