题目链接
#include <bits/stdc++.h>
using namespace std;
int n, m;
list<int> lt;
/*list是stl自带的双向列表
* 它不支持随机查询,但可以快速地插入和删除数据
* 这道题正好考察了链表重要的三个基本操作:
* 插入,删除,浏览
* 这道题很适合熟悉list的用法
*/
int main()
{
cin >> n;
list<int>::iterator iter;//list的迭代器,存放的是地址
lt.push_back(1);//第一位同学进入链表
for ( int i = 2 ; i <= n ; i++ )
{
int x, y;
cin >> x >> y;//插入的位置和方向
if ( y )//往右边插入
{
//list的插入是往目标的前方也就是左侧插入
//因此我们若需要向k号元素的右侧插入元素,需要在k+1号元素使用insert
for ( iter = lt.begin() ; iter != lt.end(