码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构实践项目——队列

时间:2015-10-06 09:13:10      阅读:652      评论:0      收藏:0      [点我收藏+]

标签:数据结构   线性表   队列   实践项目   

本组项目针对《数据结构基础系列(3):线性表》中的7-12课:

7.队列的定义
8. 顺序队的存储及基本操作
9. 环形队列的存储及基本操作
10. 队列的链式存储结构及其基本运算的实现
11. 队列的应用-迷宫问题
12. 双端队列

【项目1 - 建立顺序环形队列算法库】
  定义顺序环形队列存储结构,实现其基本运算,并完成测试。
要求:
  1、头文件sqqueue.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:

void InitQueue(SqQueue *&q);  //初始化顺序环形队列
void DestroyQueue(SqQueue *&q); //销毁顺序环形队列
bool QueueEmpty(SqQueue *q);  //判断顺序环形队列是否为空
int QueueLength(SqQueue *q);   //返回队列中元素个数,也称队列长度
bool enQueue(SqQueue *&q,ElemType e);   //进队
bool deQueue(SqQueue *&q,ElemType &e);  //出队

  2、在sqqueue.cpp中实现这些函数
  3、在main函数中完成测试,包括如下内容:

(1)初始化队列q
(2)依次进队列元素a,b,c
(3)判断队列是否为空
(4)出队一个元素
(5)输出队列中元素个数
(6)依次进队列元素d,e,f
(7)输出队列中元素个数
(8)将队列中所有元素删除,并输出序列
(9)释放队列

[参考解答]

【项目2 - 建立链队算法库】
  定义链队存储结构,实现其基本运算,并完成测试。
  具体要求参照项目1。
[参考解答]

【项目3 - 负数把正数赶出队列】
  设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,表示输入结束。要求将队列处理成环形队列,使用环形队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。当进队出队异常(如队满)时,要打印出错信息。
[参考解答]

【项目4 - 队列数组】
  创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。最后输出所有的非空队列。
  要求将队列处理成链式队列,使用链式队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。
  设程序运行时输入:70 59 90 72 67 88 80 64 29 97 18 83 40 13 0
  输出结果如下图:技术分享

提示:
指向单个链队的指针如下定义:
LiQueue *qu;
本项目中使用的队列数组,实际上需要将十个链队的指针,顺序存储到一个数组中即可,如下定义:
LiQueue *qu[10]; //qu是数组,数组中存储指针,存储的是指向LiQueue类型的指针

[参考解答]

【项目5 -排队看病模拟】
编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事:
(1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。
(2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。
要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:
(1)排队——输入排队病人的病历号,加入到病人排队队列中。
(2)就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。
(3)查看排队——从队首到队尾列出所有的排队病人的病历号。
(4)不再排队,余下顺序就诊——从队首到队尾列出所有的排队病人的病历号,并退出运行。
(5)下班——退出运行,提示未就诊的病人明天再来。
运行结果可以如下图所示:
  技术分享

[参考解答]

【项目6 - 停车场模拟】
  设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路(假定停车场内设有供车辆进出的便道,所有的司机也必须在车内随时待命),待该辆车开出外,其他车辆再按原次序进入车场。每辆停放在车场的车在它离开停车场时,要按停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。

  技术分享

提示:
  以栈模拟停车场,以队列模拟车场外的候车场,有车离开时,供车辆进出的便道也应该用栈表示。按照从键盘读入的输入数据序列进行模拟管理。汽车到达和离开时,每一组输入数据包括汽车牌照号码(设为整数)以及到达或离去的时刻(为简单化,也设为整数,如1,代表停车场开始营业的第1小时)。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或修车场上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在候车场上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。

[参考解答]

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构实践项目——队列

标签:数据结构   线性表   队列   实践项目   

原文地址:http://blog.csdn.net/sxhelijian/article/details/48929267

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!