题目
小王子有一天迷上了排队的游戏,桌子上有标号为 1−10的 10个玩具,现在小王子将他们排成一列,可小王子还是太小了,他不确定他到底想把那个玩具摆在哪里,直到最后才能排成一条直线,求玩具的编号。已知他排了 M 次,每次都是选取标号为 X 个放到最前面,求每次排完后玩具的编号序列。
要求一:采用单链表解决
input
第一行是一个整数 M,表示小王子排玩具的次数。
随后 M 行每行包含一个整数 X,表示小王子要把编号为 X 的玩具放在最前面。
output
共 M 行,第 i 行输出小王子第 i 次排完序后玩具的编号序列。
sample input
5
3
2
3
4
2
sample output
3 1 2 4 5 6 7 8 9 10
2 3 1 4 5 6 7 8 9 10
3 2 1 4 5 6 7 8 9 10
4 3 2 1 5 6 7 8 9 10
2 4 3 1 5 6 7 8 9 10
代码
#include<bits/stdc++.h>
using namespace std;//把一个数字从 list 中间放在开头
void listsort(list<int>&num,int head)
{num.remove(head);num.push_front(head);
}void out(int n)
{cout<<n<<' ';
}void showlist(list<int> num)
{for_each(num.begin(),num.end(),out);
}int main()
{list<int> num;for(int i=1;i<11;i++)num.push_back(i);int count,head;cin>>count;for(int i=0;i<count;i++){cin>>head;listsort(num,head);showlist(num);cout<<endl;}return 0;
}