下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 栈和队列的基本操作实验报告

栈和队列的基本操作实验报告.doc

栈和队列的基本操作实验报告

Annie佩丽
2019-02-02 0人阅读 举报 0 0 暂无简介

简介:本文档为《栈和队列的基本操作实验报告doc》,可适用于工程科技领域

《数据结构》实验报告一软件徐蜀实验二栈和队列的基本操作及其应用一、实验目的、掌握栈和队列的顺序存储结构和链式存储结构以便在实际中灵活应用。、掌握栈和队列的特点即后进先出和先进先出的原则。、掌握栈和队列的基本运算如:入栈与出栈入队与出队等运算在顺序存储结构和链式存储结构上的实现。二、实验内容.回文判断三、实验要求、按照数据结构实验任务书提前做好实验预习与准备工作。、加“*”题目必做其他题目任选多选者并且保质保量完成适当加分。、严格按照数据结构实验报告模板和规范及时完成实验报告。四、实验步骤(说明:依据实验内容分别说明实验程序中用到的数据类型的定义、主程序的流程以及每个操作(函数)的伪码算法、函数实现、程序编码、调试与分析。附流程图与主要代码)㈠、数据结构与核心算法的设计描述(程序中每个模块或函数应加注释说明函数功能、入口及出口参数)、栈的初始长度与需要再增加的长度#defineSTACKINITSIZE#defineSTACKINCREMENTtypedefcharSElemType定义SElemType为char型、栈的顺序存储表示typedefstruct{SElemType*baseSElemType*topintstacksize}SqStack、队列的链式表示方法typedefstructQNode{SElemTypedatastructQNode*next}QNode,*QueuePtrtypedefstruct{QueuePtrfrontQueuePtrrear}LinkQueue、初始化栈*函数功能:对栈进行初始化参数:栈(SqStackS)成功返回否则返回      *intInitStack(SqStackS){Sbase=(SElemType*)malloc(STACKINITSIZE*sizeof(SElemType))申请内存if(!Sbase)判断有无申请到空间returnERROR没有申请到内存返回Stop=SbaseSstacksize=STACKINITSIZEreturnOK}、入栈操作*      函数功能:将元素入栈参数:栈(SqStackS),插入元素e插入成功返回否则返回      *intPush(SqStackS,SElemTypee){if(StopSbase>=Sstacksize)判断栈顶与栈底的差是否大于栈的容量{Sbase=(SElemType*)realloc(Sbase,(SstacksizeSTACKINCREMENT)*sizeof(SElemType)) 栈满了重新申请内存if(!Sbase)  判断是否申请成功returnERROR  不成功返回Stop=SbaseSstacksizeSstacksize=STACKINCREMENT}*Stop=ereturnOK}、出栈操作*          函数功能:将栈中的元素弹出参数:栈(SqStackS),记录元素e  *intPop(SqStackS,SElemTypee){if(Stop==Sbase) 判断栈是否为空returnERRORe=*(Stop)returnOK}、初始化队列*           函数功能:初始化队列参数:队列(LinkQueueQ)成功返回否则返回     *intInitQueue(LinkQueueQ){Qfront=Qrear=(QueuePtr)malloc(sizeof(QNode))申请结点的内存if(!Qfront) 判断有无申请到空间returnERROR 没有返回Qfront>next=returnOK}在队列队尾插入元素*            函数功能:在队列队尾插入元素参数:队列(LinkQueueQ)插入元素e成功返回否则返回       *intEnQueue(LinkQueueQ,QElemTypee){p=(QueuePtr)malloc(sizeof(QNode))申请新的结点if(!p)returnERRORp>data=ep>next=Qrear>next=PQrear=preturnOK}删除队头元素*                函数功能:删除对头元素参数:队列(LinkQueueQ)记录值e成功返回否则返回     *intDeQueue(LinkQueueQ,QElemTypee){if(Qfront==Qrear)判断队列是否为空returnERRORp=Qfront>nexte=p>dataQfront>next=p>nextif(Qrear==p)Qrear=Qfrontfree(p)returnOK}、主函数intmain(){SqStackS声明一个栈LinkQueue Q声明一个队列charm,k,cintn=,i,j,t=,z=while(!t){cout<<"请输入你要判断回文的字符串输入结束:"InitQueue(Q)InitStack(S)while((c=getchar())!='')对字符的判断  不断输入字符{EnQueue(Q,c)Push(S,c)n}for(j=j<=nj){OutQueue(Q,m)Pop (S,k)if(m!=k)break}if(j>n)如果j>n则说明全部相等cout<<"这个字符串不是回文字符串"<<endlelsecout<<"这个字符串是回文字符串"<<endl}return}说明:通过调用序列号不同的函数进行各种操作。函数根据每次输入的数进行判断不在内的函数将结束否则将继续进行。㈢程序调试及运行结果分析(应包含多组测试数据)五、实验总结通过这次试验我知道自己还有很多不足还会犯一些细节上的错误但是也因此对栈和队列的操作有了很好的认识附录、程序流程图N                                                    YNYNY、程序清单#include<iostream>#include<malloch>usingnamespacestd栈的表示和实现#defineSTACKINITSIZE#defineSTACKINCREMENT#defineERROR#defineOKtypedefcharSElemTypetypedefstruct{SElemType*baseSElemType*topintstacksize}SqStack队列的表示和实现typedefstructQNode{SElemTypedatastructQNode*next}QNode,*QueuePtrtypedefstruct{QueuePtrfrontQueuePtrrear}LinkQueue关于栈的函数intInitStack(SqStackS){Sbase=(SElemType*)malloc(STACKINITSIZE*sizeof(SElemType))继续阅读

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/16

栈和队列的基本操作实验报告

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利