STL-list(双向链表)

标准模板库以list的方式向程序员提供了一个双向链表。
list可以有多种初始化方式;可用push_front()和push_back()在开头和末尾插入元素;可用insert()在任意位置插入元素;可用erase()删除list中的元素;可用reverse()反转list中的元素;可用sort()对list中的元素排序。

#include<iostream>
#include<stdlib.h>
#include<list>
#include<vector>
using namespace std;

template<class T>
void displaylist(const T& input);
bool descending(const int& lsh, const int& rsh);
int main()
{
    //以list的方式向程序员提供了一个双向链表
    //实例化list的各种方式
    list<int> lints;
    list<int> lints10(10);
    list<int> lints1090(10, 90);
    list<int> lintscopy(lints1090);
    vector<int> vints(10, 3);
    list<int> lintscopyanother(vints.cbegin(), vints.cend());//cbegin()和cend()返回的是const迭代器,不能用于修改元素
    //在list开头或末尾插入元素
    lints.push_front(10);
    lints.push_front(5);
    lints.push_back(20);
    lints.push_back(40);
    displaylist(lints);
    //在list中间插入元素
    list<int> l;
    l.insert(l.begin(), 2);
    l.insert(l.begin(), 1);
    l.insert(l.end(), 3);
    displaylist(l);
    list<int>l1;
    l1.insert(l1.begin(), 4, 0);
    displaylist(l1);
    list<int>l2;
    l2.insert(l2.begin(), l.begin(), l.end());
    displaylist(l2);
    l2.insert(l2.end(), l1.begin(), l1.end());
    displaylist(l2);
    //删除list中的元素
    auto ivalue=l.insert(l.begin(), 0);
    displaylist(l);
    l.erase(l.begin(), (++ivalue));
    displaylist(l);
    l.erase(ivalue);
    displaylist(l);
    l.erase(l.begin(), l.end());
    cout << "l.size()=" << l.size() << endl;
    //将list中的元素反转
    list<int> listints;
    listints.push_front(444);
    listints.push_front(2011);
    listints.push_front(-1);
    listints.push_front(0);
    listints.push_back(-5);
    displaylist(listints);
    listints.reverse();
    displaylist(listints);
    //将list中的元素排序
    listints.sort();
    displaylist(listints);
    listints.sort(descending);
    displaylist(listints);
    system("pause");
    return 0;
}

template<class T>
void displaylist(const T& input)
{
    for (auto ielement = input.cbegin(); ielement != input.cend(); ielement++)
        cout << *ielement << ' ';
    cout << endl;
}

bool descending(const int& lsh, const int& rsh)
{
    return(lsh > rsh);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值