C++双向链表list

C++双向链表list,第1张

list(c++中的链表stl) 1.头文件
#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<<' ';
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/915180.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存