- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
20142102王鹏宇实验二教程
PAGE
PAGE 13
北京电子科技学院
《数据结构》实验报告
题 目: 银行客户排队等候系统模拟
班 级: 1421
姓 名: 王鹏宇
学 号:
完成日期: 2016.4.28
1.问题描述
设计一个程序,通过本实验使学生加深理解队列的逻辑特征,掌握其存储结构的描述及实现方法,掌握队列初始化、入队、出队等相关基本操作的实现方法,从而达到能灵活运用队列解决应用问题的目的。
客户到银行办理业务,需要取号排队等候。客户分为VIP客户、理财客户、一般客户三种类型。不同类型客户,取得不同的排队序号凭证,进入不同序列排队等候。当服务窗口出现空闲时,按既定策略从三种类型客户中选取客户接受服务。三种类型客户的服务优先顺序从高到低依次为:VIP客户、理财客户、一般客户;相同类型的客户采取先来先服务的原则;当理财客户连续3次未被选中时,下一次优先选取理财客户接受服务。当一般客户连续5次未被选中时,下一次优先选取一般客户接受服务。
2.需求分析
此程序应使用队列编写,先进先出,并且因为有三种类型的客户,所以需要三个队列来实现。
这道题还要编写程序使其实现:当理财客户连续3次未被选中时,下一次优先选取理财客户接受服务。当一般客户连续5次未被选中时,下一次优先选取一般客户接受服务。
并且保证新拿到号的vip客户和理财客户,看到的“前面还有x人”的数值是正确的。
3.概要设计
(1)创建队列链表
typedef struct QNode{//定义结点
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;//定义队头指针
QueuePtr rear;//定义队尾指针
int number;//定义计数变量
}LinkQueue;
(2)退出程序时释放空间
int DeQueue(LinkQueue Q){//出队操作
QueuePtr p;
if(Q.rear==Q.front)
return 0;
p=Q.front-next;
Q.front-next=p-next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);//释放空间
return 1;
}(3)系统中子程序(函数)及功能要求
void Main();主函数,显示主界面,调用计算模块
typedef struct Node;定义一个队列链表
int InitQueue(LinkQueue Q);队列初始化
int EnQueue(LinkQueue Q,int e);进队列
int DeQueue(LinkQueue Q);出队列
void tianjia(LinkQueue Q1,LinkQueue Q2,LinkQueue Q3) :添加用户
void shuchu(LinkQueue Q1,LinkQueue Q2,LinkQueue Q3) :输出排队顺序
4.详细设计
(1)定义节点
typedef struct QNode{//定义结点
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;//定义队头指针
QueuePtr rear;//定义队尾指针
int number;//定义计数变量
}LinkQueue;
(2)队列初始化
int InitQueue(LinkQueue Q){//队列初始化
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)
exit(-2);//溢出
Q.front-next=NULL;
return 1;
}(3)进队列
int EnQueue(LinkQueue Q,int e){
QueuePtr p;
p = (QueuePtr) malloc(sizeof(QNode));
if(!p)
exit(-2);
p-data=e;
p-next=NULL;
Q.rear-next=p;
Q.rear=p;
return 1;
}
(4)出队列
int DeQueue(LinkQueue Q){//出队操作
QueuePtr p;
if(Q.rear==Q.front)
return 0;
p=Q.front-next;
Q.front-next=p-next;
if(Q.rear=
您可能关注的文档
- 20140902410李东峻计算机工程系实验报告...............教程.docx
- 2014011468-吴方哲-网工1403-软件工程实验教程.doc
- 201413010316基于51单片机的浇水系统设计郑佳源教程.docx
- 20140527-P6培训讲义教程.pptx
- 2014FSC悬架答辩报告-太原理工教程.pptx
- 2014—2015初二第二学期物理期中试卷教程.doc
- 2014—2015学年度第一学期海口市九年级数学科期末检测题教程.doc
- 2014、2015通信真题教程.doc
- 人教版七年级下册数学8.3第2课时实数的运算教学课件(新教材).pptx
- 人教版七年级下册数学9.2.1用坐标表示地理位置教学课件(新教材).pptx
文档评论(0)