20142102王鹏宇实验二摘要.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京电子科技学院《数据结构》实验报告题 目:银行客户排队等候系统模拟班 级:1421姓 名:王鹏宇学 号成日期:2016.4.281.问题描述设计一个程序,通过本实验使学生加深理解队列的逻辑特征,掌握其存储结构的描述及实现方法,掌握队列初始化、入队、出队等相关基本操作的实现方法,从而达到能灵活运用队列解决应用问题的目的。客户到银行办理业务,需要取号排队等候。客户分为VIP客户、理财客户、一般客户三种类型。不同类型客户,取得不同的排队序号凭证,进入不同序列排队等候。当服务窗口出现空闲时,按既定策略从三种类型客户中选取客户接受服务。三种类型客户的服务优先顺序从高到低依次为:VIP客户、理财客户、一般客户;相同类型的客户采取先来先服务的原则;当理财客户连续3次未被选中时,下一次优先选取理财客户接受服务。当一般客户连续5次未被选中时,下一次优先选取一般客户接受服务。2.需求分析此程序应使用队列编写,先进先出,并且因为有三种类型的客户,所以需要三个队列来实现。这道题还要编写程序使其实现:当理财客户连续3次未被选中时,下一次优先选取理财客户接受服务。当一般客户连续5次未被选中时,下一次优先选取一般客户接受服务。并且保证新拿到号的vip客户和理财客户,看到的“前面还有x人”的数值是正确的。3.概要设计(1)创建队列链表typedefstructQNode{//定义结点int data;structQNode *next;}QNode,*QueuePtr;typedefstruct{QueuePtr front;//定义队头指针QueuePtr rear;//定义队尾指针int number;//定义计数变量}LinkQueue;(2)退出程序时释放空间intDeQueue(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();主函数,显示主界面,调用计算模块typedefstruct Node;定义一个队列链表intInitQueue(LinkQueue Q);队列初始化intEnQueue(LinkQueue Q,int e);进队列intDeQueue(LinkQueue Q);出队列void tianjia(LinkQueue Q1,LinkQueue Q2,LinkQueue Q3):添加用户void shuchu(LinkQueue Q1,LinkQueue Q2,LinkQueue Q3):输出排队顺序4.详细设计(1)定义节点typedefstructQNode{//定义结点int data;structQNode *next;}QNode,*QueuePtr;typedefstruct{QueuePtr front;//定义队头指针QueuePtr rear;//定义队尾指针int number;//定义计数变量}LinkQueue;(2)队列初始化intInitQueue(LinkQueue Q){//队列初始化Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!Q.front)exit(-2);//溢出Q.front-next=NULL;return 1;}(3)进队列intEnQueue(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)出队列intDeQueue(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;}(5)排序输出voidshuchu(LinkQueue Q1,LinkQueue Q2,LinkQueue Q3){int counter=0;//计数变量,用来进行统计客户接受服务的次数printf(接受服务的顺序如下:\n);while(Q1.front!=Q1.rear){//当VIP队列非空时,进行出队操作printf(VIP用户%d号\n,Q1.front-

文档评论(0)

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

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

1亿VIP精品文档

相关文档