资料介绍
实验报告2
数据结构实验二
约瑟夫问题
实 验 报 告
一 实验内容:
有n个人围成一圈,从其中某个人开始报数。报到m的人出列。他后面的人再从1开始报数
,报到m的人再出列。依此类推,最后得到一个出列序列。称为约瑟夫问题。
二 方法说明:
建立一个循环链表。为每个链节赋序号。头链节赋为1,其后链节依次为2,3…n。随
后从头开始循环。每次计数到的第m个链节被接到另一个链中,节中序号被输出。直至原
链表剩余一个链节为止。将此链节连至新建表尾部,并将其序号输出。
三 源程序:
#include
struct Lnode //建立节点结构体
{ int num;
Lnode *next;};
void main()
{
int i; //设立计数变量
int n=10; //设链表总长为10
int m=3; //设出列号为3
Lnode *p,*q,*x,*y=NULL; //设立所需节点指针
p=new Lnode; //动态分配新节点
p->num=1; //设头节点序号
x=p; /