下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福州大学数计学院《数据结构》上机实验报告专业:应用数学学号姓名班级实验名称线性表结构及其应用实验内容约瑟夫环问题实验目的和要求实验目的:利用单向循环链表解决约瑟夫环问题,提高综合设计能力。基本要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各人的编号。问题描述和主要步骤问题描述:约瑟夫问题:编号为1,2,..n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序来求出出列顺序,并输出结果。代码实现:#include<stdio.h>#include<stdlib.h>typedefstructnode{intnumber;intpass;structnode*next;}Node,*List;//初始化循环单链表voidinitList(ListL){L->number=0;L->pass=0;L->next=L;}//尾插法建立循环单链表voidcreateFromTail(Listhead,intnum[],intpas[],intlength){inti;Node*pri;Node*tmp;head->number=num[0];head->pass=pas[0];pri=head;for(i=1;i<length;i++){tmp=(Node*)malloc(sizeof(Node));tmp->number=num[i];tmp->pass=pas[i];pri->next=tmp;pri=tmp;pri->next=head;}}//从链表中删除voiddeleteFromList(List*head,Node*tmp){Node*tmp1;Node*tmp2;tmp1=*head;tmp2=tmp1;//如果链表剩了一个元素if(tmp->next==tmp){tmp->number=0;tmp->pass=0;return;}//如果此时删除了头节点,此时将头节点转移到头节点的下一个结点 if((*head)->number==tmp->number){Node*x;Node*y;x=(*head)->next;while(x!=(*head)){y=x;x=x->next;}y->next=(*head)->next;*head=(*head)->next;}else{//找到这个节点,删除他 while(tmp1->number!=tmp->number){tmp2=tmp1;tmp1=tmp1->next;}tmp2->next=tmp1->next;}}//约瑟夫计数voidyuesefu(Listhead,intm){Node*tmp;tmp=head;inttime;time=m-1;inti=0;printf("出队的顺序:(初始化的m=20)\n");while(tmp->number!=0){//链表中此时没有结点,则退出for(i=0;i<time;i++){//找到要删除的结点tmp=tmp->next;}printf("%d",tmp->number);time=tmp->pass-1;deleteFromList(&head,tmp);//删除结点tmp=tmp->next;//从下一个结点又开始计算 }}intmain(intargc,char*argv[]){inti;Node*p;intnum[7]={1,2,3,4,5,6,7};intpas[7]={3,1,7,2,4,8,4};Listhead;head=(List)malloc(sizeof(List));initList(head);createFromTail(head,num,pas,sizeof(num)/sizeof(num[0])); p=head;printf("\n约瑟夫计数前,每个数和他的密码:\n");for(i=0;i<sizeof(num)/sizeof(num[0]);i++){printf("%d,%d\n",p->number,p->pass);p=p->next;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版国际金融风险管理合同范本3篇
- 二零二五版建筑工地劳务用工及社会保障服务合同范本3篇
- 二零二五年酒店客房协议价优惠合作合同3篇
- 2024政府采购合同环境与安全监督协议3篇
- 2025年新型城镇化项目水电设施安装施工合同3篇
- 二零二五版板房租赁与租赁期满资产评估与转让合同3篇
- 二零二五年度出租车司机服务规范与客户满意度提升合同3篇
- 二零二五年透水混凝土工程验收与评估合同2篇
- 二零二五年智能交通管理系统采购合同3篇
- 二零二五版房屋代理租赁资产评估合同3篇
- 盖洛普Q12解读和实施完整版
- 2023年Web前端技术试题
- GB/T 20840.8-2007互感器第8部分:电子式电流互感器
- GB/T 14864-2013实心聚乙烯绝缘柔软射频电缆
- 品牌策划与推广-项目5-品牌推广课件
- 信息学奥赛-计算机基础知识(完整版)资料
- 发烟硫酸(CAS:8014-95-7)理化性质及危险特性表
- 数字信号处理(课件)
- 公路自然灾害防治对策课件
- 耳鸣中医临床路径
- 安徽身份证号码前6位
评论
0/150
提交评论