链表(系统学习)

时间:2019-10-07
本文章向大家介绍链表(系统学习),主要包括链表(系统学习)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<cstdlib>
#include<fstream>
#include<time.h>
#include<list>
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
const LL INF=1e9+7;
const int maxn=1e5+50;
int main()
{
    list<int>b;//构建一个空list
    cout<<b.empty()<<endl;//输出 1

    list<int>a(10,1);//定义10个整形元素向量 初值都为1
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出十个1
    }
    cout<<endl;
    list<int>c(a);//把list a 全部赋值给 c
    for(list<int>::iterator it=c.begin();it!=c.end();it++)
    {
        cout<<*it<<" ";//输出十个1
    }
    cout<<endl;
    cout<<a.size()<<endl;//大小

    a.resize(5);//调整a的大小为5
    cout<<a.size()<<endl;
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出5个1
    }cout<<endl;
    a.resize(10,2);//调整a的大小为10  多则删 少则补2
    cout<<a.size()<<endl;
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出5个1 5个2
    }cout<<endl;
    a.push_back(3);//   尾部插入3
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出5个1 5个2 一个3
    }cout<<endl;
    a.insert(a.begin(),5);//指定位置前插入一个数
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出一个5 5个1 5个2 一个3
    }cout<<endl;
    a.insert(a.begin(),3,6);//在 指定位置前插入3个6
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出三个6 一个5 5个1 5个2 一个3
    }cout<<endl;
    a.push_front(7);//头部插入一个元素
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出一个7 三个6 一个5 5个1 5个2 一个3
    }cout<<endl;
    a.erase(a.begin());//删除指定位置元素
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//输出一个7 三个6 一个5 5个1 5个2 一个3
    }cout<<endl;
    a.erase(a.begin(),a.end());//删除两个迭代器之间的元素

    for(int i=1;i<=10;i++)
    {
        a.push_back(i);
    }
    list<int>::iterator pos;
    pos=a.begin();
    cout<<*pos<<endl;//输出1
    advance(pos,5);//给迭代器指定一个位置
    cout<<*pos<<endl;//
    a.pop_back();//删除尾部元素
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    a.pop_front();//删除头部元素
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    a.assign(10,100);//重新赋值  以前的清空 赋值10个100
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;

    cout<<a.front()<<endl;//返回第一个数
    cout<<a.back()<<endl;//返回最后一个数
    a.clear();//清空链表

    a.assign(10,5);
    b.assign(10,6);
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    for(list<int>::iterator it=b.begin();it!=b.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    a.swap(b);//交换两个链表的内容
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    for(list<int>::iterator it=b.begin();it!=b.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;

    a.clear();
    for(int i=1;i<=5;i++)
    {
        a.push_back(i);
    }
    b.clear();
    for(int i=1;i<=5;i++)
    {
        b.push_back(i*10);
    }
    pos=a.begin();
    ++pos;
    a.splice(pos,b);//在指定位置前插入b链表 并且把b链表变为空
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    for(list<int>::iterator it=b.begin();it!=b.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    b.splice(b.begin(),a,pos);//将a的第pos个位置的数赋值给b 同时a中删除这个元素
    for(list<int>::iterator it=b.begin();it!=b.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    a.reverse();//反转
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    a.sort();//从小到大排序
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    a.unique();//删除重复元素
    a.merge(b);
    for(list<int>::iterator it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//
    }cout<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/caijiaming/p/11631106.html