栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++双向链表list

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++双向链表list

list(c++中的链表stl) 1.头文件
#include
2.构造函数
listl;
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::iterator Iter;

Iter p[N];
listl;
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<<' ';
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876126.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号