(STL及算法)2.顺序容器STL list类

list 是顺序容器的一种。list 是一个双向链表。使用 list 需要包含头文件 list。双向链表的每个元素中都有一个指针指向后一个元素,也有一个指针指向前一个元素。list链表可以在开头、中间、末尾插入元素。

1.在list开头插入元素
同样使用push_front函数,

#include <iostream>
#include <list>

using namespace std;

int main()
{
    list<int> a;

	a.push_front(5);
	a.push_front(4);
	a.push_front(3);
	a.push_front(2);
	a.push_front(1);

	list<int>::iterator iter;

	for (iter = a.begin(); iter != a.end(); ++iter)
		cout << *iter << endl;

	return 0;

}

2.在list末尾插入元素

#include <iostream>
#include <list>

using namespace std;

int main()
{
    list<int> a;
	a.push_back(1);
	a.push_back(2);
	a.push_back(3);
	a.push_back(4);
	a.push_back(5);

	list<int>::iterator iter;

	for (iter = a.begin(); iter != a.end(); ++iter)
		cout << *iter << endl;

	return 0;

}

3.在list中间位置插入元素
使用insert函数在链表中间插入元素。

#include <iostream>
#include <list>

using namespace std;

int main()
{
    list<int> a,b;
	list<int>::iterator iter;

	
	a.push_front(4);
	a.push_front(3);
	a.push_front(2);
	a.push_front(1);
	a.push_back(5);

	b.push_back(100);
	b.push_back(200);
	b.push_back(300); 
	b.push_back(400);

	iter = a.begin();
	++iter;

	a.insert(iter, 0);//链表的插入函数,第一个参数表示插入元素的位置;第二个参数表示插入的元素
	++iter;
	a.insert(iter, 4, 20);//在链表的iter位置插入4个20;
	++iter;
	a.insert(iter, ++b.begin(), --b.end());//在iter位置插入200 300两个元素

	

	for (iter = a.begin(); iter != a.end(); ++iter)
		cout << *iter << endl;

	return 0;

}


在这里插入图片描述

4.删除list中的元素
使用erase函数删除链表中的元素

#include <iostream>
#include <list>

using namespace std;

void PrintListContents(const list<int>& listInput);

int main()
{
	list<int> a;
	a.push_front(4);
	a.push_front(3);

	list<int>::iterator iElementValueTwo;
	iElementValueTwo = a.insert(a.begin(), 2);
	a.push_front(1);
	a.push_front(0);

	PrintListContents(a);
	cout << endl;

	a.erase(iElementValueTwo);
	PrintListContents(a);

	return 0;
}

void PrintListContents(const list<int>& listInput)
{
	cout << endl;
	cout << "{";
	std::list<int>::const_iterator iter;
	for (iter = listInput.begin(); iter != listInput.end(); ++iter)
		cout << *iter ;
	cout << "}" << endl;
}

在这里插入图片描述
5.对list中元素进行反转和排序
使用sort函数对list中的元素进行排序,使用reverse函数对list中的元素进行反转。

#include <iostream>
#include <list>

using namespace std;

void PrintListContents1(const list<int>& listInput);

int main()
{
	list<int> a;

	a.push_front(5);
	a.push_front(9);
	a.push_front(21); 
	a.push_front(16);
	a.push_front(8);

	PrintListContents1(a);

	a.sort();//链表中的元素排序
	PrintListContents1(a);

	a.reverse();//链表中的元素反转
	PrintListContents1(a);

	
}

void PrintListContents1(const list<int>& listInput)
{
	cout << endl;
	cout << "{";
	std::list<int>::const_iterator iter;
	for (iter = listInput.begin(); iter != listInput.end(); ++iter)
		cout << *iter;
	cout << "}" << endl;
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值