下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告实验名称:约瑟夫环问题 班级: 信管131 姓名: 学号: 同实验者: 实验时间: 11.7 成绩: 指导老师: 一、实验目的:(1)进一步掌握线性表的各种链式存储结构,包括单链表与循环链表,熟悉各种操作。(2)认真分析实际项目的内容,将其中的算法付诸实现,目的是练习利用线性表的链表结构来解决实际应用问题的能力,掌握线性表的实际应用。二、实验设备及主要内容一 一 实验题目:编号是1,2,n(n0)的n个人按照顺时针方向围坐一圈,每人持有一正整数密码。开始时任选一个正整数作为报数上限值m,从某个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从
2、他在顺时针方向的下一个人开始重新从1报数,如果要求围坐一圈的人并不全出列,要余下k(自己确定)个人不出列又该怎样改进此算法。设计一个程序来求出出列顺序,并输出结果。需求分析:本演示程序在VC环境下编写二 需求分析输入的形式和输入值的范围:输入元素的个数;每个人的密码;在所有输入中,元素的值都是整数输出的形式:剩余人数的出列序号测试程序:输入总人数为5 剩余人数为3 从第一个人开始出列 每个人的密码分别为:2 3 4 5 6 则输出的为:2 5 三 概要设计从参考程序分析typedef struct int num; int cipher; struct node *next; linklist
3、;#includeh1.h /* 建立单循环链表函数 */ linklist *creat(int n) int k; linklist *head, *r, *p; p=(linklist *)malloc(sizeof(linklist); head=p; p-num=1;printfprintf(输入第一个人的密码:n); scanf(%d,&p-cipher); r=p; p-next=p; for(k=2;knum=k; printf(输入密码:n); scanf(%d,&p-cipher); r-next=p; r=p; p-next=head;return(head); /* 选
4、择出列编号 */linklist *select(linklist *head, int m) linklist *p,*q; int k;q=head;k=1;p=q-next; /q为p的前趋指针,p指向当前报数的人while(q!=p) k=k+1; /报一次数 if(k%m=0) printf(出列的序号为:%dn,p-num); m=p-cipher; q-next=p-next; /对应的结点从链表中删除 free(p); k=0; p=q-next; elseq=p; p=p-next; / p指向当前报数的人 head=p;return(head);void main()voi
5、d main() int n,m;linklist *head;printf(Input n:n);scanf(%d,&n);printf(Input the number to call:n);scanf(%d,&m);head=creat(n);head=select(head,m);printf(The last one is:%dn,head-num);若要控制剩余人数必须再定义一个变量N作为判断依据!本程序包含三个函数:主函数:main()建立单循环链表函数 linklist *creat(int n)选择出列函数:linklist *select(linklist *head, i
6、nt m,int N,int n)详细设计:#include#includetypedef struct node int num; int cipher; struct node *next; linklist; /* 建立单循环链表函数 */ linklist *creat(int n) int k; linklist *head, *r, *p; p=(linklist *)malloc(sizeof(linklist); head=p; p-num=1; printf(输入第1个人的密码:n); scanf(%d,&p-cipher); r=p; p-next=p; for(k=2;k
7、num=k; printf(输入第%d个人的密码:n,k); scanf(%d,&p-cipher);r-next=p;r-next=p; r=p; p-next=head;return(head); /* 选择出列编号 */linklist *select(linklist *head, int m,int N,int n) linklist *p,*q; int k,j=0;q=head;k=1;p=q-next; /q为p的前趋指针,p指向当前报数的人while(q!=p&jnum);j+; m=p-cipher; q-next=p-next; /对应的结点从链表中删除 free(p);
8、 k=0; p=q-next; elseq=p; p=p-next; / p指向当前报数的人 head=p;return(head); void main() int n,m,N;linklist *head;printf(请输入总人数:n);scanf(%d,&n);printf(请输入剩余的人数:n);scanf(%d,&N);printf(请输入从第一次从第几个人开始出列:n);scanfscanf(%d,&m);head=creat(n);head=select(head,m,N,n);/printf(The last one is:%dn,head-num);调试分析:程序是否编写错误使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年公共卫生执业医师考试健康教育学模拟试题及答案
- 2026年网络营销师职业资格考试电子商务支付与结算法律法规专项训练题库及答案
- 2026年电子商务师考试电子商务国际化与跨境电商专项训练习题集及答案
- 安全评价师安全评价方法与实务备考习题集及答案
- 2026年无人机驾驶员执照考试无人机导航系统模拟试题及答案
- 特种作业操作证考试高频考点专项训练题及答案
- 2026年健身运动处方编制与实施模拟试题及答案
- 物业管理服务质量提升策略测试题及答案
- 2026年中级统计师考试统计报告撰写模拟试卷及答案
- 北师大版数学 暑假收心卷01(暑假测试) 新八年级 同步练习 含答案
- 椎动脉起始部狭窄血管内介入治疗中国专家共识(2024版)
- DB34T 2042-2014 地理标志产品 五城米酒
- 《Photoshop》完整教学课件
- 中医基础理论-初级课件
- 初中八年级数学课件-最短路径-将军饮马问题
- 5第五章历史时期的沙漠变迁
- 2023年共青团南京市雨花台区委员会招考聘用编外工作人员2人笔试题库含答案解析
- GB/T 37329-2019电子围栏导体用铝合金线材
- (word完整版)高中物理实验读数专题
- 喻国明《传媒经济学教程》笔记和课后习题(含考研真题)详解
- 2015年抗菌药物临床应用指导原则(2015年版)
评论
0/150
提交评论