#include<iostream>
using namespace std;
const int m=2;
struct node{
int num;
node* next;
node* creat(node*);
void pop(node*);
void out(node*);
};
node* node::creat(node *p){
node* q;
q=p;
cout<<"请输入有多少个人坐成一圈?"<<ends;
int n;
cin>>n;
for(int temp(1);temp<=n-1;temp++){
q->num=temp;
q->next=new node;
q=q->next;
}
q->num=n;
q->next=p;
return p;
}
void node::pop(node* p){
node* q;
q=p;
while(p->next!=p){
for(int temp(1);temp<m;temp++)
p=p->next;
q=p->next;
cout<<"数到3离开圈子的人的编号"<<q->num<<endl;
p->next=q->next;
p=p->next;
delete q;
}
p->next=NULL;
cout<<"最后剩下的人的编号为"<<p->num<<endl;
}
void node::out(node* p){
node* q;
q=p;
int i=1;
while(q->next!=p){
cout<<"编号"<<i++<<"为"<<q->num<<endl;
q=q->next;
}
cout<<"编号"<<i<<"为"<<q->num<<endl;
}
void main()
{
node* p=new node;
p=p->creat(p);
p->out(p);
p->pop(p);
}