链表(list)

链表

        链表(list容器类):#include<list>,是一种双线性列表,只能顺序访问(从前向后或者从后向前)。
        list 的数据组织形式
        与前面两种容器类有一个明显的区别就是:它不支持随机 访问。要访问表中某个下标处的项需要从表头或表尾处 (接近该下标的一端)开始循环。而且缺少下标运算符: operator[] 。
        在任何位置上执行插入或删除动作都非常迅速,内部只需调整一下指针。

 

        <list> 内部实现: 双向链表
        list<T, Alloc>
        支持操作:
        begin(), end(), size(), clear(), empty()
        push_back(), pop_back()
        push_front(), pop_front()
        insert() O(1)
        erase() O(1)
        sort() O(nlogn),不同于<algorithm>中的sort
        list仍然包含了erase(),begin(),end(),insert(),push_back(),push_front()这些基本函数,下面我们来演示一下list的其他函数功能。
        merge():合并两个排序列表;
        sort():列表的排序;


        list举例

#include <iostream>
#include <string>
#include <list>
using namespace std;

void PrintIt(list<int> n) 
{
	for (list<int>::iterator iter = n.begin(); iter != n.end(); ++iter)
		cout << *iter << " ";	//用迭代器进行输出循环
	cout << endl;
}

int main(void) 
{
	list<int> listn1, listn2;
		//给listn1,listn2初始化
	listn1.push_back(123);
	listn1.push_back(0);
	listn1.push_back(34);
	listn1.push_back(1123);
		//now listn1:123,0,34,1123
	listn2.push_back(100);
	listn2.push_back(12);

	PrintIt(listn1);
	PrintIt(listn2);
		//now listn2:100,12
	listn1.sort();
	listn2.sort();
		//给listn1和listn2排序
		//now listn1: 0,34,123,1123 listn2: 12,100
	PrintIt(listn1);
	PrintIt(listn2);
	listn1.merge(listn2);
		//合并两个排序列表后,listn1: 0,12,34,100,123,1123
	PrintIt(listn1);
	cin.get();           // 这个和getchar()类似?
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值