哪个大佬能和我说这个约瑟夫环哪里有问题吗
#include <iostream>
using namespace std;
struct circle
{
int id;
circle *next;
};
circle* circlelist(int n)
{
circle *head,*p;
p=head=new circle;
for(int i=1;i<n;i++)
{
p->id=i;
p->next=new circle;
p=p->next;
}
p->id=n;
p->next=head;
return head;
}
circle* circledelect(circle *a,circle *b)
{
circle *h,*p;
p=a;
for(;p!=b;)
{
h=p;
p=p->next;
}
delete b;
h->next=b->next;
return h;
}
circle* circleselect(circle *a,int n)
{
circle *head,*p;
p=head=a;
int k=1,A=0;
for(;A!=n-1;)
{
if(k%3==0)
{
head=circledelect(a,p);
A++;
p=head;
}
p=p->next;
k++;
}
return p;
}
int main()
{
circle *a,*b;
int n;
cin>>n;
a=circlelist(n);
b=circleselect(a, n);
cout<<b->id<<endl;
return 0;
}