#include <iostream>
#include <cstdlib>
using namespace std;
struct BackList
{
int pos;
int flag;
struct BackList *next;
};
struct BackList *p=NULL,*q=NULL,*h=NULL;
void CreateList(int x)
{
int i;
h=p=new BackList;//(sizeof(struct BackList));
p-> flag=0;
p-> pos=1;
for(i=2;i <=x;i++)
{
q=new BackList ;//(sizeof(struct BackList));
p-> next=q;
q-> flag=0;
q-> pos=i;
p=q;
}
p-> next=h;
}
void Output(struct BackList *L,int m,int n,int s)
{
int i;
while(L-> pos!=s)
{
L=L-> next;
}
while(m>=1)
{
for(i=1;i <=n;i++)
{
if(L-> flag==1)
{
L=L-> next;
}
if(i%n==0)
{
if(L-> flag==0)
{
cout<<L->pos;
L-> flag=1;
L=L-> next;
m=m-1;
}
}
if(i%n!=0)
{
L=L-> next;
}
}
}
}
void main()
{
CreateList(4);
Output(h,4,2,2);
//getch();
}
循环链表解决约瑟夫问题
最新推荐文章于 2023-09-20 22:19:27 发布