网站大量收购独家精品文档,联系QQ:2885784924

20142102王鹏宇实验二教程.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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=

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档