循环单链表法实现Josephus问题.doc_第1页
循环单链表法实现Josephus问题.doc_第2页
循环单链表法实现Josephus问题.doc_第3页
循环单链表法实现Josephus问题.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

向量法求解Josephus问题智能一班 林潇 2220101468一 实验题目描述问题可描述如下:设有个人围成一个环,现从第个人开始报数,数到第的人出列,然后从出列的下一个人从新开始报数,数到第的人又出列,如此重复,直至所有人均出列为止。求这些人出列的顺序。二 实验目的熟练掌握线性表的链表实现基本操作。三实现功能以循环单链表为存储结构,求解问题。四算法步骤编写一个独立的函数模块求解问题,该函数仅通过参数与外界进行数据交换,不使用其它非局部变量,实现方案应具有良好的健壮性。另编写一个主函数作为驱动,在主函数中处理数据的输入与输出。五程序结构描述程序主要包括一个驱动功能的主函数,包括要排列数组元素的输入,开始报数的位置,所报数字的输入。还有一个独立函数模块来实现Josephus问题,主函数通过调用该函数来实现元素的出列,并将出列元素按顺序重新存入数组,并将出列元素按顺序输出。六程序代码#define N 10#include#includetypedef struct LNode/建立节点类型int message;struct LNode *next;LNode,*LinkList;void Josephus(LinkList L,int s,int m,int n,int e,int a);void main()int i,s,m,e;int a10;printf(请输入Josephus环的元素);/输入组成Josephus环的元素for(i=0;imessage=a0;L-next=NULL;Josephus(L,s,m,N,e,a);void Josephus(LinkList L,int s,int m,int n,int e,int a)LinkList p,q;int i,j; /将组成Josephus环的元素储存到单链中for(i=n-1;i0;i-)p=(LinkList)malloc(sizeof(LNode);p-message=ai;p-next=L-next;L-next=p;LinkList H;H=L;for(i=0;inext; H-next=L;/尾部节点的指针指向头结点p=L;for(i=1;inext;/找到开始报数位置i=1; /利用循环将元素输出while(p-next!=p-next-next)for(j=1;jnext;q=p-next;p-next=q-next;e=q-message;free(q);/释放被输出元素的节点printf(n第%d 个出列的元素为%dn,i,e);p=p-next;i+; printf(n第%d 个出列的元素为%dn,10,p-message);七测试数组及结果测试数组为一个长度为10的整形数组,存储元素为1-10是个整数。开始报数位置为数组的第二个元素,所报数字为3。测试结果截屏如下:八实验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论