实验四 链栈 一、实验目的 1、 掌握用VC工具上机调试链栈的基本方法; 2、 掌握链栈的基本操作,链栈初始化、链栈入栈、链栈出栈、判断链栈是否为空、求队列长度以及链栈销毁操作; 3、 掌握栈在链式映像下的操作实现。 二、实验学时 2学时 三、实验类型 验证型 四、实验内容 1、 链栈的初始化、链栈入栈、链栈出栈、判断链栈是否为空、求链栈长度、链栈输出及链栈销毁操作的实现; 2、 通过设计统一界面来调用链栈的基本操作的实现。 五、实验原理 1、 链栈概述 链栈是栈这一受限的线性表的链式映像实现。为方便操作,链栈采用带头结点的单链表存储结构,若链栈为空则栈头结点指针域为空;若链栈非空则栈头结点指向链栈的第一个元素,操作是可将其赋值给工作指针进行相应的各种操作即可。 2、链栈基本算法 (1)LinkStackInitiate(S); 初始化链栈S。 (2)LinkStackEmpty(S); 判断链栈S非空否操作 。 (3)EnLinkStack (S,x); 链栈S入栈操作,在链栈S的栈顶插入数据元素x。 (4)DeLinkStack (S,d); 链栈S出栈操作,把链栈S的栈顶元素删除并由参数d带回。 (5)LenLinkStack (S); 求链栈S长度。 (6)DisLinkStack (S); 输出链栈S。 (7)DestroyLinkStack(S);销毁链栈S。 3、模块层次 要求画出链栈的模块层次图。如图所示 main()LinkStackInitiateLinkStackEmptyEnLinkStack DeLinkStackLenLinkStackDisLinkStackDestroyLinkStack图7 链栈的模块层次图 4、关键算法NS图 六、实验步骤及要求 用VC语言编程实现建立一个链栈,并在此链栈中入栈若干个元素和出栈若干个元素 1. 链栈初始化; 2. 通过键盘读取元素建立链栈S; 3. 判断此循环队列是否为空; 4. 5. 6. 7. 输出此链栈; 求此时链栈S长度; 链栈S若干个元素入栈; 求此时链栈S长度; 8. 输出此链栈S; 9. 链栈S出栈若干个元素; 10. 判断此链栈S是否为空; 11. 求此时链栈S长度; 12. 输出此链栈S; 13. 销毁此链栈S; 14. 程序完成。 七、界面要求 1、界面统一。如下图所示: 图8 链栈统一界面图 2:界面可以不统一,按自己设计的形式。 八、思考问题 结合实验过程,回答下列问题: 1、 何时采用循环队列处理问题为最佳选择。 九、实验报告要求 1、 根据对队列这一受限的线性表的理解,如何实现循环队列; 2、 实现循环队列的入队和出队操作的程序设计思路; 3、 何时选用循环队列去解决实际问题; 4、 采用循环队列解决问题的特点; 5、 调试程序过程中遇到的问题及解决方案; 6、 本次实验的结论与体会。 本文来源:https://www.wddqw.com/doc/43872d606aeae009581b6bd97f1922791688bee2.html