ImageVerifierCode 换一换
格式:DOCX , 页数:66 ,大小:500.52KB ,
资源ID:6415078      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6415078.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(算法与数据结构说明书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

算法与数据结构说明书.docx

1、算法与数据结构说明书算法与数据结构课程设计说明书学生姓名: 文云杰 学号: 11500103班级:2011级计算机科学与技术基地班 题目:1 队列实现的仿真技术预测理发馆的经营状况题目:2 病人就医管理模拟问题题目:3 长整数运算问题题目:4随机走步问题题目:5 最短字符串问题题目:6 猴子吃桃问题题目:7 跳马问题题目:8 数据删除题目: 9排序比较题目类型:软件工程(R) 指导教师: 张永 题目1:队列实现的仿真技术预测理发馆的经营状况序言 理发馆营业情况模拟主要运用的数据类型就是队列,先进先出的数据特点,顾客在选择了所要级别的理发师后,如果有顾客在理发就需要排队,当前面的理完发后,先排队

2、的顾客开始理发。队列的选择,可以是顺序的,也可以是链式的队列,这儿选择链式队列(考虑到空间复杂度的需要)。营业时间以及理发时间的产生分别由程序决定和随机产生一个半个小时到一个小时之间的数代表。题目的要求考验了对队列的认识掌握程度。数据类型: 链式队列:结构体:struct node int cl;/理发师级别 node *link; ;struct queuenode *front; node *rear;整型数组:int a4=0,0,0,0;/椅子int tim2=9,00;/时间(早上9点到下午6点)各模块流程图及伪码算法:函数Ya()是实现程序仿真的主题函数,通过case 1、case

3、 2、case 3 选择语句模拟顾客的活动。函数make(cl) 是模拟顾客活动的具体函数实现,对花费时间ti,花费金钱money(),现在的时间tim2以及是否理发期间有顾客进来的判断、排队。函数count()、count2(),是对总人数num1 num2 num3 和排队人数b1 b2 b3的控制调节。函数调用关系图:调试分析 遇到的问题:1. 营业时间、理发时间的控制;通过一个一维整形全局变量数组,随机产生数解决。2. 怎样判断是否有顾客指定正在理发的理发师理发;通过给一个顾客理完后,提出提问是否有顾客指定正在理发的理发师理发?来解决顾客排队的问题。测试结果 执行结果通过产生随机数来进

4、行,到下班时间后退出。 执行结果如下: 源程序:#include#includeusing namespace std;int num1=0; /一级理发师理发的总人数int num2=0; /二级理发师理发的总人数int num3=0; /三级理发师理发的总人数int b1=0; /一级理发师排队的人数int b2=0; /一级理发师排队的人数int b3=0; /一级理发师排队的人数int a4=0,0,0,0; 椅子是否被占 (0-空,1-被占)int tim2=9,00;/时间(早上9点到下午6点)struct node int cl; node *link; ;struct queu

5、e node *front; node *rear;queue *q1=new queue;queue *q2=new queue;queue *q3=new queue;void init(queue *q,int k) /初始化 q-front=new node; q-rear=q-front; q-front-cl=k;void count(int x) if(x=1) num1+; else if(x=2) num2+; else if(x=3) num3+;void count1(int x) if(x=1) b1+; else if(x=2) b2+; else if(x=3) b

6、3+;void count2(int x) if(x=1) b1-; else if(x=2) b2-; else if(x=3) b3-;int count3(int x) if(x=1) return b1; else if(x=2) return b2; else if(x=3) return b3; return 0;void enterqueue(queue *q,int x) /入队 count(x); node *s=new node; s-cl=x; q-rear-link=s; q-rear=s;void money(int x) if(x=1) cout您好!您的消费金额是

7、40元!endl; if(x=2) cout您好!您的消费金额是30元!endl; if(x=3) cout您好!您的消费金额是20元!endl; void make(int x) int ti=30+rand()%30; int n=0; cout您好!您所用时间为ti分钟=60) tim0+; tim1=tim1-60; cout现在时间是:tim0时tim1分endl; cout理发期间有几位顾客要该级别的理发师理发?s; /cinn; n=rand()%2; cout有n位顾客。endl; for(int i=0;in;i+) count1(x); cout先生(女士),不好意思,请您

8、稍等一会.endl; cout您的编号为:count3( x)=18) cout下班时间到!endl; void ya() coutendlendl欢迎光临!endl; cout请问您需要理发师的级别(1-3)endl; int cl=0; cl=rand()%3+1; cout需要级别为cl的理发师endl; count1(cl); cout您的编号为:count3( cl)front-cl=cl)&acl=0) cout请count3(cl)号坐cl号座.endl; acl=1; make(cl); count(cl); count2(cl); acl=0; else cout先生(女士)

9、,不好意思,请您稍等一会.front-cl=cl&acl=0) cout请count3(cl)号坐cl号座.endl; acl=1; make(cl); count(cl); count2(cl); acl=0; else cout先生(女士),不好意思,请您稍等一会.front-cl=cl&acl=0) cout请count3(cl)号坐cl号座.endl; acl=1; make(cl); count(cl); count2(cl); acl=0; else cout先生(女士),不好意思,请您稍等一会.endl; enterqueue(q3,cl); break; void deal()

10、 /数据处理总结 int num=num1+num2+num3; float a=60.0*7/num; int b=b1+b2+b3; float c=(float)b/3; cout每位顾客平均逗留的时间是a分钟endl; cout顾客排队等候理发的队列长度平均值是cendl; int b1=num1*40+num2*30+num3*20; cout今天的营业额是b1元endl; cout仍需完成服务的收尾工作时间为tim1分钟endl; cout一级理发师的创收是num1*40元endl; cout二级理发师的创收是num2*30元endl; cout三级理发师的创收是num3*20元e

11、ndl;int main() init(q1,1); init(q2,2); init(q3,3); int flag=1; cout欢迎光临!=18) flag=0; cout下班时间到!endl; coutendlendl; cout-endl; cout今天的营业情况:endl; deal(); return 1; 题目:2 病人就医管理模拟问题关键字: 病人 就医管理 模拟问题前言 病人就医管理模拟问题程序中涉及到排队问题,所以解决的方法也主要是运用队列来解决,此程序运用链式队列来解决问题,病人排队、就诊,分别是队列的入队出队,查看排队就是遍历一次队列,输出排队的病人的病历号。数据类型

12、 链式队列: struct node string data; node *link;struct queue node *front; node *rear;函数的伪代码 init(queue *q) /初始化申请一个node大小的空间,将front和rear初始化相等 enterqueue(queue *q,string x) /进队 为q申请一个node大小的空间,将x进队,队尾rear指向q deletequeue(queue *q,string *x) /出队 将队头front的测试结果 源代码:#include#include#includeusing namespace std;

13、struct node string data; node *link;struct queue node *front; node *rear;void init(queue *q) /初始化 q-front=new node; q-rear=q-front;void enterqueue(queue *q,string x) /进队 node *s; s=new node; s-data=x; q-rear-link=s; q-rear=s; coutx排队成功front=q-rear) cout没有人排队!front-link; q-front-link=p-link; if(q-rea

14、r=p) q-rear=q-front; *x=p-data; return 1;void ya(queue *p) /遍历 int flag=1; if(p-front=p-rear) cout没有人排队!endl; coutfront=p-rear) flag=0; coutfront-data front=p-front-link ; int main() cout-菜单-endl; cout (1) 排队endl; cout (2) 就诊endl; cout (3) 查看排队endl; cout (4) 下班endl; cout-endl; int x; cout选择要实现功能的序号(

15、1-4)x; /srand(time(0); /x=rand()%5+1; /coutxendl; queue *a=new queue; string s=000000; init(a); do switch(x) case 1: cout请输入病历号:s; coutendl; enterqueue(a,s); break; case 2: int i; i=deletequeue(a,&s); if(i=1) couts号就诊endl; break; case 3: cout现在排队的病人有:endl; ya(a); coutendl; break; case 4: cout下班!endl

16、; return 1; cout选择要实现功能的序号(1-4,按0退出)endlendlx; /x=rand()%5+1; /coutxendl; if(x=0) break; while(1); return 1;题目:3 长整数运算问题数据类型: 链表struct node int data; node *link;主要函数伪代码ya1(node *p,node *q)是长整形数字的输入,p和q作为头指针,用while语句,每次申请一个node的空间,将输入的数字x存到data中,头指针指向申请的新空间。ya2(node *p,node *q)是两个数字的相加,num1 num2 分别是两

17、个数字的长度,将两个数字同位的数字相加,存到新申请的空间中,长出来的数字直接存入申请的空间中,然后各位上大于9的数字减10,向前进一位。 ya3(node *p,node *q)是两个数字的相减,类似于两个数字的相加,小于减数的向后退一位。 void ya4(node *p,node *q)是两个数字的相乘,将每个链表的数字转换为一个数字,相乘得结果。测试结果: 源程序:#includeusing namespace std;struct node int data; node *link;int num1=0;int num2=0;void jiemian() cout请选择所要操作(1-5

18、)endl; cout 1-输入 endl; cout 2-相加 endl; cout 3-相减 endl; cout 4-相乘 endl; cout 5-退出 endl;void ya1(node *p,node *q) /数字的输入 node *a; a=p; node *b; b=q; node *s; cout输入第一个数字(输入-1结束):x; s=new node; s-data=x; a-link=s; a=s; num1+; cout输入第二个数字(输入-1结束):y; s=new node; s-data=y; b-link=s; b=s; num2+; cout第一个数字:

19、; for(int i=1;ilink; coutdata; coutendl第二个数字:; for(int j=1;jlink; coutdata; coutlink=NULL; p=p-link; q=q-link; for(int i=1;idata=p-data+q-data; s-link=a-link; a-link=s; for(int j=num2;jdata=p-data; s-link=a-link; a-link=s; cout直接相加后为:; for(int k=1;klink; coutdata; coutlink=NULL; p=p-link; q=q-link;

20、for(int i=1;idata=p-data-q-data; s-link=a-link; a-link=s; for(int j=num2;jdata=p-data; s-link=a-link; a-link=s; cout直接相减后为:; for(int k=1;klink; coutdata; coutendl;double ya44(node *p) double x=0.0; for(int i=1;ilink; x=x+p-data; return x;void ya4(node *p,node *q) /相乘 double x=ya44(p); double y=ya44(

21、q); /cout*endl; /coutxendl; /coutyendl; cout相乘得:endl; cout(double)x*yendl; void ya5() /退出程序 cout退出程序!link=NULL; node *b=new node; b-link=NULL; int x; jiemian(); cinx; coutendl; do switch(x) case 1: ya1(a,b); break; case 2: ya2(a,b); break; case 3: ya3(a,b); break; case 4: ya4(a,b); break; case 5: ya5(); cout请选择所要操作(1-5)x; coutendl; while(1); return 1;题目:4随机走步问题数据类型: 结构体: struct point int x; int y; ; 主要函数伪代码: 申请一个point空间,定义四个全局变量n

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1