电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

数据结构约瑟夫环问题的课程设计VIP免费

数据结构约瑟夫环问题的课程设计_第1页
1/7
数据结构约瑟夫环问题的课程设计_第2页
2/7
数据结构约瑟夫环问题的课程设计_第3页
3/7
课程设计与内容要求 约瑟夫环问题 [问题描述] 编号是1,2,……,n 的n 个人按照顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1 开始顺序报数,报到m 时停止报数。报m 的人出列,将他的密码作为新的m 值,从他在顺时针方向的下一个人开始重新从1 报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。 [基本要求] 利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。此题所用的循环链表中不需要“头结点”,请注意空表和非空表的界限。 [测试数据] m 的初值为20,n=7 ,7 个人的密码依次为3,1,7,2,4,7,4,首先 m=则正确的输出是什么? [要求]: 输入数据:首先输入待处理人员数及他们的密码,然后输入 m 的初值,建立单循环链表。 输出形式:建立一个输出函数,将正确的出列序列输出。 一问题描述与分析 约瑟夫问题 编号是1,2,……,n 的n 个人按照顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1 开始顺序报数,报到m 时停止报数。报m 的人出列,将他的密码作为新的m 值,从他在顺时针方向的下一个人开始重新从1 报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。 分析 利用单循环链表解决本问题,先创建一个有n 个的单循环链表,依次录入密码。然后从第一个结点出发,连续略过 m-1 个结点,将第m 个结点从链表中删除,并将第m 个结点的密码作为新的 么 值,接着从下个结点开始,循环此过程,直至链表为空。 二数据结构描述 利用不带头结点的单循环链表来作为约瑟夫环的存储结构 三主要算法 流 程描述 1 主要流程图 定义数据类型 ↓ 创建单循环链表 ↓ 删除结点并输出结点 2 具体程序段及其说明 #include #include typedef struct node{ int number; int key; struct node* next; }listnode, * circularlist;//定义了结点类型listnode 和指针类型circularlist int main(){ int amount,t,code,m,k;// amount 表示总人数,code 表示相应的学生密码 circularlist w=(listnode*)malloc(sizeof(listnode)); w->next=w;//循环链表仅一个元素时依然满足 listnode *v; printf("请输入总人数:"); scanf("%d",&amount); v=w; for...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

数据结构约瑟夫环问题的课程设计

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部