
#include
2.构造函数
list<int>l;
3.常用成员函数
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<int>::iterator Iter;
Iter p[N];
list<int>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<<' ';
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)