#include2.构造函数
list3.常用成员函数l;
l.push_front(1); l.push_back(2);//这两个成员函数用于在链表头或链表尾插入元素 l.pop_front(),l.pop_back();/顾名思义 l.begin(),l.end();//返回指向链表头,链表尾的迭代器 l.insert(it,val);//用于在指定位置(it)插入val.返回值为指向插入的值的迭代器 l.remove(it);//用于删除it指向的节点,注意,在操作后it失效 //其他:remove(val):删除所有值为val的节点,size()返回元素个数,empty()判断链表是否为空,unique():sort后去重,sort():排序例题:P1160
这道题中有大量的插入删除操作,适合使用链表。
code:
#include#include
using namespace std; const int N=1e5+5; typedef list ::iterator Iter; Iter p[N]; list l; int n,m,k,p,re; int main() { cin>>n;l.emplace_front(1),p[1]=l.begin(); for(int i=1;i<=n;i++) { cin>>k>>p; if(!p)p[i]=l.insert(p[k],i); else p[i]=l.insert(p[k]+1,i); } cin>>m; while(m--)cin>>re,l.remove(p[i]); for(Iter i=l.begin();i!=l.end();i++)cout<<*i<<' '; }



