#include<iostream>
using namespace std;
struct Xlist
{
int data;
Xlist *next;
};
void foundList(Xlist *&lista,int n)
{
lista=new Xlist;
lista->next=lista;
Xlist *la;
lista->data=1;
la=lista;
for(int i=2; i<=n; i++)
{
Xlist *s=new Xlist;
s->data=i;
s->next=la->next;
la->next=s;
la=s;
}
}
void Answer(Xlist *lista,int total,int num,int sta)
{
Xlist *la=lista;
Xlist *s;
sta--;
while(sta!=0)
{
la=la->next;
sta--;
}
if(num==1)
{
while(total>1)
{
s=la;
la=la->next;
cout<<s->data<<endl;
delete s;
total--;
}
cout<<"剩下的最后一个是:"<<la->data;
}
else
{
for(int i=num; i>2; i--)
{
la=la->next;
}
s=la->next;
cout<<s->data<<endl;
la->next=s->next;
delete s;
total--;
while(total>1)
{
for(int i=num; i>1; i--)
{
la=la->next;
}
s=la->next;
cout<<s->data<<endl;
la->next=s->next;
delete s;
total--;
}
cout<<"剩下的最后一个是:"<<la->data;//这里一定要输出la->data,千万不要写lista->data,因为lista这个链表并没有删除节点,操作后lista和la表示的不是一个链表,lista还是完整的没删除过任何节点的链表,而la只剩下最后一个节点。这个bug找了好久我一开始写的lista->data,以为这两个是一样的。
}
}
int main()
{
Xlist *lista;
int m,n,t;
cin>>m>>n>>t;
foundList(lista,m);
Answer(lista,m,n,t);
}
using namespace std;
struct Xlist
{
int data;
Xlist *next;
};
void foundList(Xlist *&lista,int n)
{
lista=new Xlist;
lista->next=lista;
Xlist *la;
lista->data=1;
la=lista;
for(int i=2; i<=n; i++)
{
Xlist *s=new Xlist;
s->data=i;
s->next=la->next;
la->next=s;
la=s;
}
}
void Answer(Xlist *lista,int total,int num,int sta)
{
Xlist *la=lista;
Xlist *s;
sta--;
while(sta!=0)
{
la=la->next;
sta--;
}
if(num==1)
{
while(total>1)
{
s=la;
la=la->next;
cout<<s->data<<endl;
delete s;
total--;
}
cout<<"剩下的最后一个是:"<<la->data;
}
else
{
for(int i=num; i>2; i--)
{
la=la->next;
}
s=la->next;
cout<<s->data<<endl;
la->next=s->next;
delete s;
total--;
while(total>1)
{
for(int i=num; i>1; i--)
{
la=la->next;
}
s=la->next;
cout<<s->data<<endl;
la->next=s->next;
delete s;
total--;
}
cout<<"剩下的最后一个是:"<<la->data;//这里一定要输出la->data,千万不要写lista->data,因为lista这个链表并没有删除节点,操作后lista和la表示的不是一个链表,lista还是完整的没删除过任何节点的链表,而la只剩下最后一个节点。这个bug找了好久我一开始写的lista->data,以为这两个是一样的。
}
}
int main()
{
Xlist *lista;
int m,n,t;
cin>>m>>n>>t;
foundList(lista,m);
Answer(lista,m,n,t);
}