王康乾王康乾.doc

王康乾王康乾.doc

ID:56267400

大小:455.50 KB

页数:3页

时间:2020-06-04

王康乾王康乾.doc_第1页
王康乾王康乾.doc_第2页
王康乾王康乾.doc_第3页
资源描述:

《王康乾王康乾.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1、实验题目栈和队列2、实验目的和要求实验目的(1)熟练掌握栈的逻辑结构和操作规则,能在相应的实际问题中正确选用该结构。(2)熟练掌握栈的2种存储结构实现方法(顺序栈和链栈),两种存储结构和基本运算的实现算法,注意栈空盒满的判断条件及它们的描述方法。(3)熟练掌握队列的逻辑结构和操作规范,能在相应的实际问题中正确选用该结构。(4)掌握循环队列与链队列两种存储结构的实现,熟练掌握各种队列基本运算的实现。实验要求(1)顺序栈的插入、删除,栈顶数据元素的读取。(2)链栈的插入、删除,栈顶数据元素的读取。(3)循环队列的插入、删除。(4)链队列

2、的插入、删除。3、实验内容(1)抽象数据类型定义在栈的实验中可实现,入栈、出栈、显示栈顶元素、显示栈中元素、显示栈的长度等功能;在循环队列中可实现建立循环队列,入队和出队运算;(2)存储结构定义及算法思想①存储结构typedefstruct//栈的顺序存储表示{SElemType*base;//在栈构造之前和销毁之后,base的值为NULLSElemType*top;//栈顶指针intstacksize;//当前已分配的存储空间,以元素为单位}SqStack;栈含有两个指针,一个底部指针base,另外一个是首部指针top。通过这两个指针

3、可实现入栈,出栈的操作;intPop(SqStack&S,int&e)//出栈{//若栈不空,则删除S的栈顶元素,用e返回其值,并返回1;否则返回0if(S.top==S.base)return0;e=*(--S.top);return1;}出栈运算中,首先要确定有元素可以出,若栈为空则返回0,否则用e将栈顶元素返回;typedefstruct{QElemType*base;intfront;intrear;}SqQueue;循环队列采用结构体来定义,其中两个元素rear、front分别是队尾和队首元素。②典型函数分析入栈:intPus

4、h(SqStack&S,inte)//入栈插入元素e为新的栈顶元素{if(S.top-S.base>=S.stacksize)//栈满,追加存储空间{S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));if(!S.base)exit(0);//存储分配失败S.top=S.base+STACKINCREMENT;}*(S.top++)=e;return1;}入栈之前必须检查栈中是否还有存储空间,若没有存储空间则要继续开辟新的存储空间,再入栈;若存储空间

5、是够的,则只需将给top指针附一个值,再将top指针加一个,这样就可以完成入栈操作了入队:StatusEnQueue(SqQueue&s,QElemTypee){if((s.rear+1)%MAXQSIZE==s.front)returnERROR;s.base[s.rear]=e;s.rear=(s.rear+1)%MAXQSIZE;returnOK;returnOK;}在入队操作中,首先也要判断队是否已满,如果满了将不能继续入队,则要返回error。若队未满则可以继续入队,在入队时直接给s.base[s.rear]赋值e,rear是

6、队尾,这样满足队列的基本特性;主函数(栈)主函数依然在一个while循环中,在这个循环中不断地打印和输入。通过输入的值选择不同的子程序执行,从而实现不同的功能;③调试步骤开启调试调试过程(3)实验结果与分析栈的相关操作顺序队列的相关操作(4)心得体会此次实验相对于第一次试验的还是很有进步的,在实验过程中虽然也遇到了很多问题,但是我通过自己的查询资料和询问同学最终还是把问题解决了,这极大的鼓舞了我,将我对程序的畏惧感打消了,不断的理解数据结构这门课程存在的意义和结构化程序的写法。相信在以后的时光里,我对编程会有更大的热情和动力。在这次实验

7、中我真正体验到了,调试的步骤;以前觉得调试,就是盲目的去找问题,但这次在同学的帮助下,我开始认识到调试其实是可以单步运行,然后观察程序运行的结果的,这样我们在调试程序时会有更高的效率;具体步骤如上所示;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。