#include <iostream.h>
struct Tnode
{
  int data;
  Tnode *next;
};//节点定义
 
class TPclass
{
   public:
      TPclass(int ms,int mb,int mm);
      void Creat();
      //int OutNode(Tnode *p);
     void Print();
      ~TPclass()
      {
     Tnode *temp;
 for(temp=flag;temp->next!=NULL;temp=temp->next)
   delete(temp); 
      }
   protected:
       Tnode *head,*tail,*flag;
       int sump,beginp,m;
};
TPclass::TPclass(int ms,int mb,int mm)//初始化
{
                     head=NULL;
                 tail=NULL;
                 sump=ms;
                 beginp=mb;
                 m=mm;
                 flag=NULL;
                 
}
void TPclass::Creat()//建立循环表
{
       Tnode *temp=NULL;
       int number=1;
       head=new Tnode;
       tail=new Tnode;
       head->data=1;
       head->next=tail;
       tail->data=sump;
       tail->next=head;//建立头和尾
           
      while(number!=(sump-1))//中间插的人的数量 按一定的位置顺序
        { 
          temp=new Tnode;
          temp->data=sump-number;
          temp->next=head->next;
          cout<<temp->data<<endl;
          head->next=temp;
          number++;
        }
      
}

void TPclass::Print()
{
    Tnode *temp=head,*p=NULL;//temp:开始的变量  
    while(temp->data!=beginp)
        temp=temp->next;
    
    while(sump!=2)//留两个 可以设置变量 让用户选择
    {       
    for(int i=1;i<=m;i++)//选人
       temp=temp->next;  
      p=temp->next;//p=temp
      temp->next=p->next;
      cout<<p->data<<endl;
      delete(p);
      sump--;
    }    
     flag=temp;  
    for(int i=1;i<=2;i++)
    {
      cout<<"the last"<<temp->data;//因为留了两个
      temp=temp->next;
    }

}
void main()
{
    int stop;
TPclass TP(20,5,2);
TP.Creat();
TP.Print();
cin >>stop;

}