文档介绍:实验六队列的实现
一、 实验目的
(1) 链式存储结构的队列的特点与实现;
(2) 循环顺序存储结构的队列的特点与实现;
(3) 栈和队列的简单应用;
二、 实验环境
Windows 2000以上版本的操作系统,Visual C次程 序暂停时记录数据。观察第5次调试时队列中数据,分析入队EnQueue(Q2;e'); 是否成功,并说明为什么?
循环队列队头元素位置:
循环队列队尾元素位置:(-1+ OUEUESIZE)% OUEUESIZE
循环队列容量:OUEUESIZE-1
暂停序号 front rear 队列中全部元素
0
0
0
无
1
0
1
*
2
0
2
6a\
勺,
3
0
3
'b,,
4
0
4
'b,,
& ,
0,
5
0
4
出,
'b,,
& ,
2)取消其它断点,在语句DeQueue(Q2,temp);处按“F9”设置断点④,按“F5” 调试程序至断点处暂停(暂停序号0),然后按“F10”调试程序4次,每次程 序暂停时记录数据。
注意:出队时,并不会在内存中清除掉实际的元素,这是顺序存储(数组)的 特点。队列由front和rear指示即可。
循环队列队空的标志:==
暂停序号 front rear 队列中全部元素
0
0
4
'a', 'b' , 'c' , 'd'
1
1
4
,b' , 'c,,
2
2
4
, 'd,
3
3
4
id,
4
4
4
无
3)取消其它断点,在语句EnQueue(Q2,'j');处按“F9”设置断点⑤,按“F5” 调试程序至断点处暂停,然后按“F10”调试程序1次,程序暂停时记录数据。 观察队列中数据,分析入队EnQueue(Q2,'j');是否成功,并说明为什么?
循环队列队满的标志:(+1) % OUEUESIZE ==
暂停序号 front rear 队列中全部元素
0
4
3
'f',
'g',
1
4
3
'g',
'h,,
,i,
通过上述验证过程,总结链式结构和顺序结构在入队、出队操作时的异同?
相同点:插入(入队)操作:在队尾位置进行,需要更新队尾rear指针;
删除(出队)操作:在队头位置进行,需要更新队头front指针。
不同点:链式结构第一元素入队时,在更新队尾指针的同时也须更新队头指针;最 后一个元素出队时,在更新队头指针的同时也须更新队尾指针。
顺序结构入队操作只需要更新队尾rear指针;出队操作只需要更新队头 front指针。
编程题:(根据附件中的工程上机验证下面各题目)
Reverse(LinkQueue &Q)函数,回答下列问题:
该函数的功能是什么?利用下面的主函数替代原来文件的主函数,观察运行结果 验证你的结论。〃利用栈结构逆置队列
int main()
{
LinkQueue Q;
InitQueue(Q);
for(int i=0;i<4;i++)
EnQueue(Q,'a'+i);