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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C++插队买票.docx

1、C+插队买票此程序必须自己建立 people.txt(进入大厅插队的人) friend.txt(朋友组) input.txt(初始化各个窗口的人) output.txt(输出结果)#include#include#includeusing namespace std;void show();struct NODE /队伍的数据结构 char name20; int front; int next;struct FRIEND /朋友组的数据结构 char name20;struct location /记录每个窗口最后一个朋友的位置及所在个数 int sit; /位置 int number; /

2、第几个 ;NODE n1100; /代表一号窗口NODE n2100; /代表二号窗口NODE n3100; /代表三号窗口NODE n4100; /代表四号窗口int front4,last4; /front指向各个窗口的第一个人,lase指向最后一个(下标)location locat4; int num4; /记录每个窗口的人数FRIEND F100; /朋友的信息 int numfriend=0; /记录朋友的个数int Time4; /记录时间,通过它来体现各窗口的售票速度ofstream outfile(output.txt,ios:out);int hash(char r) /r

3、是排队人姓名 for(int i=0;ri!=0;i+); if(i=4) return (r1+27*r2+27*27*r3+27*27*27*r4)%103; else return (r1+27*r2+27*27*r3)%103;int judge(char r,int n,int m) /冲突处理函数,n表示哈希值,m表示第几个窗口 int x=1; /用来进行平方探测 int y=1; if(0=m) if(n1n.front=0) return n; else for(int n2=n;n1n.front!=0&n=0;)/平方探测再散列 n=n2+x*x*y; if(y0) x+

4、; y=y*(-1); if(n=0) return n; else cout无法入队!是否清除无关人员?(Y/N)F; if(F=y|F=Y) show(); return 11111; else if(F=n|F=N) cout无法入队!endl; else cout没有您所选择的操作!endl; else if(1=m) if(n2n.front=0) return n; else for(int n1=n;n2n.front!=0&n=0;)/平方探测再散列 n=n1+x*x*y; if(y0) x+; y=y*(-1); if(n=0) return n; else cout是否清除

5、无关人员?(Y/N)F; if(F=y|F=Y) show(); else if(F=n|F=N) cout无法入队!endl; else cout没有您所选择的操作!endl; else if(2=m) if(n3n.front=0) return n; else for(int n1=n;n3n.front!=0&n=0;)/平方探测再散列 n=n1+x*x*y; if(y0) x+; y=y*(-1); if(n=0) return n; else cout是否清除无关人员?(Y/N)F; if(F=y|F=Y) show(); else if(F=n|F=N) cout无法入队!end

6、l; else cout没有您所选择的操作!endl; else if(n4n.front=0) return n; else for(int n1;n4n.front!=0&n=0;)/平方探测再散列 n=n1+x*x*y; if(y0) x+; y=y*(-1); if(n=0) return n; else cout是否清除无关人员?(Y/N)F; if(F=y|F=Y) show(); else if(F=n|F=N) cout无法入队!endl; else cout没有您所选择的操作!endl; void insert(char r) /r是排队人姓名 int a=0; /标记r是否

7、在朋友组中,a=1表明r在朋友组中 for(int i=0;inumfriend;i+) if(strcmp(Fi.name,r)=0)a=1;break; if(0=a) i=0; int j,min=numi; /min表示四个窗口中最小的队伍 for(j=0;jnumj) min=numj; i=j; /i表示最短队伍 j=hash(r); /此时j代表哈希函数返回的值 int k=judge(r,j,i); /k标记插入在哪个位置 if(k!=11111) if(0=i) n1last0.next=k; n1k.front=last0; strcpy(n1k.name,r); last

8、0=k; num0+; else if(1=i) n2last1.next=k; n2k.front=last1; strcpy(n2k.name,r); last1=k; num1+; else if(2=i) n3last2.next=k; n3k.front=last2; strcpy(n3k.name,r); last2=k; num2+; else n4last3.next=k; n4k.front=last3; strcpy(n4k.name,r); last3=k; num3+; else coutr 无法入队!endl; else int i=0,k=0; /k用来标记队伍中是

9、否有自己的朋友,k=0表示没有 int j,min; /min表示四个窗口中朋友的最后位置最前的队伍 for(i=0;i=3;i+) if(locati.number!=0) min=locati.number; k=1; j=i; i=j; j=0; for(j=0;jlocatj.number&locatj.number!=0) min=locatj.number; i=j; /i表示那个窗口朋友的位置最前 if(0=k) int i1=0; int j1,min1=numi1; /min1表示四个窗口中最小的队伍 for(j1=1;j1numj1) min1=numj1; i1=j1;

10、j1=hash(r); /此时j代表哈希函数返回的值 if(0=i1) int sign=judge(r,j1,i1); if(sign!=11111) n1last0.next=sign; n1sign.front=last0; strcpy(n1sign.name,r); last0=sign; num0+; locat0.sit=sign; locat0.number=num0; else coutr 无法入队!endl; else if(1=i1) int sign=judge(r,j1,i1); if(sign!=11111) n2last1.next=sign; n2sign.fr

11、ont=last1; strcpy(n2sign.name,r); last1=sign; num1+; locat1.sit=sign; locat1.number=num1; else coutr 无法入队!endl; else if(2=i1) int sign=judge(r,j1,i1); if(sign!=11111) n3last2.next=sign; n3sign.front=last2; strcpy(n3sign.name,r); last2=sign; num2+; locat2.sit=sign; locat2.number=num2; else coutr 无法入队

12、!endl; else int sign=judge(r,j1,i1); if(sign!=11111) n4last3.next=sign; n4sign.front=last3; strcpy(n4sign.name,r); last3=sign; num3+; locat3.sit=sign; locat3.number=num3; else coutr 无法入队!endl; else int i1=0; int j1,min1=numi1; /min表示四个窗口中最小的队伍 for(j1=0;j1numj1) min1=numj1; i1=j1; /i1表示最短队伍 if(numi1=

13、locati.number) /每队中最后的那个排在最前的朋友比其他最短的队要后 j1=hash(r); /此时j1代表哈希函数返回的值 if(0=i1) int sign=judge(r,j1,i1); if(sign!=11111) n1last0.next=sign; n1sign.front=last0; strcpy(n1sign.name,r); last0=sign; num0+; locat0.sit=sign; locat0.number=num0; else coutr 无法入队!endl; else if(1=i1) int sign=judge(r,j1,i1); if

14、(sign!=11111) n2last1.next=sign; n2sign.front=last1; strcpy(n2sign.name,r); last1=sign; num1+; locat1.sit=sign; locat1.number=num1; else coutr 无法入队!endl; else if(2=i1) int sign=judge(r,j1,i1); if(sign!=11111) n3last2.next=sign; n3sign.front=last2; strcpy(n3sign.name,r); last2=sign; num2+; locat2.sit

15、=sign; locat2.number=num2; else coutr 无法入队!endl; else int sign=judge(r,j1,i1); if(sign!=11111) n4last3.next=sign; n4sign.front=last3; strcpy(n4sign.name,r); last3=sign; num3+; locat3.sit=sign; locat3.number=num3; else coutr 无法入队!locati.number&locati.number!=0)/当最后的那个队友比其他最短的对要前时,且不是排在第一个 j=hash(r);

16、/此时j代表哈希函数返回的值 if(0=i) int J=judge(r,j,i); if(J!=11111) n1J.next=n1locat0.sit.next; n1locat0.sit.next=J; strcpy(n1J.name,r); n1J.front=locat0.sit; locat0.sit=J; locat0.number+; num0+; else coutr 无法入队!endl; else if(1=i) int J=judge(r,j,i); if(J!=11111) n2J.next=n2locat1.sit.next; n2locat1.sit.next=J;

17、 strcpy(n2J.name,r); n2J.front=locat1.sit; locat1.sit=J; locat1.number+; num1+; else coutr 无法入队!endl; else if(2=i) int J=judge(r,j,i); if(J!=11111) n3J.next=n3locat2.sit.next; n3locat2.sit.next=J; strcpy(n3J.name,r); n3J.front=locat2.sit; locat2.sit=J; locat2.number+; num2+; else coutr 无法入队!endl; el

18、se int J=judge(r,j,i); if(J!=11111) n4J.next=n4locat3.sit.next; n4locat3.sit.next=J; strcpy(n4J.name,r); n4J.front=locat3.sit; locat3.sit=J; locat3.number+; num3+; else coutr 无法入队!endl; void show() time_t t;tm*it;t=time(NULL);it=localtime(&t); int k4; int number4; for(int T=0;Ttm_min+it-tm_hour*100; numberT=kT-TimeT; int x=front0; int x1; int i=0; int b=0; /判断是否运行了下面的循环 int a1,a2,a3,a4; /判断四个窗口的人员情况 for(a1=0;i2|number1=2) for(a2=0;inumber1;i=i+2) /清除2号窗口的无关人员,即买好票的人,速度两秒一人

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

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