#include<iostream>
using namespace std;
typedef struct Node
{
int data;
Node *next;
}lnode,*list;
list listcreateJoseph() //循环链表
{
int i,len,data;
list L,p,r;
L=(lnode*)malloc(sizeof(lnode));
L->next=NULL;
r=L;
cin>>len;
cin>>data;
L->data=data;
for(i=1;i<len;i++)
{
cin>>data;
p=(lnode*)malloc(sizeof(lnode));
p->data=data;
L->next=p;
L=p;
}
L->next=r;
return r;
}
void Joseph(list l,int k)
{
if(l==NULL)
return;
list p,q,temp;
int i,j,len;
p=l;
q=p->next;
i=1;
while((p||q)&&p!=q )
{
i++;
if(i==k)
{
temp=q;
p->next=q->next;
cout<<"The delete num:"<<temp->data<<" ";
delete[] temp;
i=1;
p=p->next;
q=p->next;
}
else
{
p=q;
q=q->next;
}
}
cout<<endl;
cout<<"The last num:"<<p->data<<endl;;
}
void output(list l)
{
list p;
p=l;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
}
int main()
{
list L;
L=listcreateJoseph();
// output(L);
int k;
cin>>k;
Joseph(L,k);
system("pause");
return 0;
}
循环链表解决约瑟夫环问题
最新推荐文章于 2022-09-18 10:47:31 发布