约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
//用循环链表实现
#include
using namespace std;
typedef struct Node
{
int data;
Node* next;
}LNode,*LinkList;
LNode * create(int num)
{
p->data=i;
p->next=NULL;
head=p;
r=p;
p->data=i;
p->next=NULL;
r->next=p;
r=p;
}
int ysf(int n,int k,int m)//共有n个人,从编号为k的人开始报数,数到m的那个人出列;
{
r=r->next;
pre=p;
for(j=0;j
{
pre=p;
p=p->next;
}
cout<<p->data<<" ";
cout<<endl;
}
void main()
{
int n,k,m;
cout<<"输入总人数:"<<endl;
cin>>n;
if(n<=0)
return;
cout<<"输入开始报数的编号:"<<endl;
cin>>k;
if(k<=0)
return;
cout<<"输入出队的报数号:"<<endl;
cin>>m;
if(m<=0)
return;
}