数据结构课程设计内包五个程序源代码.docx
- 文档编号:29854915
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:33
- 大小:71.20KB
数据结构课程设计内包五个程序源代码.docx
《数据结构课程设计内包五个程序源代码.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计内包五个程序源代码.docx(33页珍藏版)》请在冰豆网上搜索。
数据结构课程设计内包五个程序源代码
数据结构课程设计
网络工程112班
赵凡举
201101024229
《数据结构课程设计》实验报告
【完成题目1】猴子选大王
【问题描述】
一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1--m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
【基本要求】
输入数据:
输入m,n。
m,n为整数,n 输出形式: 中文提示按照m个猴子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。 【算法设计】 采用头指针和尾指针指针,将m个猴子编号构成环,从第一个开始数,数到第n个猴子,将其淘汰,即第n-1个的后继变成第n+1个,然后从第n+1个开始数,如此循环,直到剩下最后一个即为大王 【源代码】 #include usingnamespacestd; structNode { intdata; structNode*next; }; intmain() { structNode*head,*s,*q,*t; intn,m,count=0,i; cout<<"输入猴子个数m"< cin>>m; cout<<"输入淘汰第几个n"< cin>>n; if(i=1) cout<<"大王是"< else { for(i=0;i { s=(structNode*)malloc(sizeof(structNode)); s->data=i+1; s->next=NULL; if(i==0) { head=s; q=head; } else { q->next=s; q=q->next; } } q->next=head; q=head; do { count++; if(count==n-1) { t=q->next; q->next=t->next; count=0; } q=q->next; } while(q->next! =q); cout<<"大王是"< } return0; } 运行演示 【收获及体会】 猴子选大王问题,也可以用数组来实现,所用思想一样,查到第n个就将其删除,从下一个继续数,构成环是要有语句q=head; 【完成题目2】随机整数排序问题 【问题描述】 针对随机产生2000个以上的整数,采用多种方法进行排序,并显示排序结果,比较各种算法的效率。 【基本要求】 1.为了提高效率,所产生的随机整数可以用文件保存,供各排序算法共用; 2.为了更好地进行比较,采用3种以上方法实现排序,并分别保存排序结果; 3.记录每种排序所耗费的时间。 【算法设计】 随机整数的产生srand(time(0));for(i=1;i<=n;i++){a[i]=rand();}n可以控制个数,采用冒泡,选择,归并三种排序方法,计算时间的算法为start=clock();......finish=clock();tim=(double)(finish-start)/CLOCKS_PER_SEC;省略号为排序代码,tim即为排序耗费时间 【源代码】 #include #include #include usingnamespacestd; voidmergesort(int*num,intstart,intend); voidmerge(int*num,intstart,intmiddle,intend); voidmergesort(int*num,intstart,intend) { intmiddle; if(start { middle=(start+end)/2; mergesort(num,start,middle); mergesort(num,middle+1,end); merge(num,start,middle,end); } } voidmerge(int*num,intstart,intmiddle,intend) { intn1=middle-start+1;intn2=end-middle; int*L=newint[n1+1];int*R=newint[n2+1]; inti,j=0,k; for(i=0;i { *(L+i)=*(num+start+i); } *(L+n1)=1000000; for(i=0;i { *(R+i)=*(num+middle+i+1); } *(R+n2)=1000000; i=0; for(k=start;k<=end;k++) { if(L[i]<=R[j]) { num[k]=L[i]; i++; }else { num[k]=R[j]; j++; } } } intmain() { clock_tstart,finish; doubleduration; intn,i,j,t,b; floattim; inta[100000]; cout<<"输入个数(100000以内)"< cin>>n; srand(time(0)); for(i=1;i<=n;i++) { a[i]=rand(); } cout<<"产生的随机数: "< for(j=1;j<=n;j++) cout< cout< while (1) { cout<<"****选择****"< cout<<" (1)冒泡排序"< cout<<" (2)选择排序"< cout<<"(3)归并排序"< cout<<"(4)退出"< cin>>b; if(b==4) break; switch(b) { case1: { start=clock(); for(j=1;j<=n;j++) for(i=1;i<=n-j;i++) { if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } cout<<"冒泡排序结果"< for(j=1;j<=n;j++) cout< cout< finish=clock(); tim=(double)(finish-start)/CLOCKS_PER_SEC; cout<<"用时: "< }break; case2: { start=clock(); for(i=1;i { intk=i; for(j=i+1;j<=n;j++) { if(a[j] k=j; t=a[k]; a[k]=a[i]; a[i]=t;} }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 五个 程序 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)