文档介绍:栈和队列实验报告
覃孔林 数据结构报告
数据结构(2013)实验报告02 班级: 姓名: 实验方式:上机 成绩: 教师批阅处:
一、实验名称
栈和队列基本操作的编程实现
二、实验目的
栈和队列基本操作的编程实现(2学时栈和队列实验报告
覃孔林 数据结构报告
数据结构(2013)实验报告02 班级: 姓名: 实验方式:上机 成绩: 教师批阅处:
一、实验名称
栈和队列基本操作的编程实现
二、实验目的
栈和队列基本操作的编程实现(2学时,验证型),掌握栈和队列的建立、进栈、出栈、进队、出队等基本操作的编程实现,也可以进一步编程实现实用的功能等操作,具体编程存储结构要求是顺序存储结构(链表存储结构建议作为课外实验),可以依次完成主要功能来体现功能的正确性,用菜单进行管理完成大部分功能,要求可以重复运行。
三、实验内容
(一)栈基本功能的编程实现
1、实验设计
(1)栈的基本功能清单:数据进栈、数据出栈、输出栈中的数据、求栈中元素的个数、销毁此栈和结束程序等。栈的所有功能利用链接存储结构实现。
(2)数据进栈的方式采用从键盘逐个输入(没输入一个数据按回车键),数据出栈按照“后进先出”的原则输出。
2、界面设计
(1)主菜单:
图 1
覃孔林 数据结构报告
(2)数据进栈:
图 2
(3)数据出栈:
图 3
(4)显示栈中数据:
图 4
3、栈功能菜单设计特点:
由于考虑到,栈功能的实现必须在先有数据进栈的前提下,才能进行数据出栈、显示栈中所有数据、求栈长度以及读取栈顶数据等功能。所以当用户进入该栈功能菜单时,如果不是先进行数据进栈操作,而检测后面的功能时,则提示先输入数据,再进行相应操作,比如:
图 5
4、栈操作示意图
(1)当有数据要进栈的时候,便申请一个空间。然后将新的结点的next指向栈顶top,接着移动top指针,使其指向新的结点。示意图如下:
linkstacktop 30 20 10 ^
40 newnodep
^
图 6 链表的进栈操作示意图
覃孔林 数据结构报告
(2)当要执行数据出栈操作时,将top指针往后移,指向其next指向的结点,然后删除top之前指向的结点。示意图如下:
Linkstacktop 20 30 10 ^
newnodep
图 7 链栈的出栈操作示意图
(二)队列基本功能的编程实现
1、实验设计
(1)队列的基本功能菜单:数据入队、数据出队、显示队列数据、求队列长度、读取对头数据、清空队列和退出程序等功能。队列的基本功能采用链接存储的结构来实现。
(2)数据进栈的方式同样采用键盘输入的方式(没输入一个数据按回车键),输出则按照队列的性质“先入先出”输出。
2、界面设计
(1)主界面:
图 8
(2)数据入队:
图 9
覃孔林 数据结构报告
(3)数据出队:
图 10
显示队列的数据:
图 11
3、队列功能设计特点:
和栈的设计一样,用户要操作队列时,队列里必须先有数据,否则将无法