标准模板库----list

//链表list
#include<iostream>
using namespace std;
#include<list>
#include<algorithm>
/*
**list的定义和初始化
list<int>lst1;								//创建空list
list<int>lst2(5);							//创建含有5个元素的list
list<int>lst4(lst2);						//使用lst2初始化lst4
list<int>lst5(lst2.begin(),lst2.end());		//同lst4

lst(first,last)		//声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素

push_back():从list的末端插入

push_front():从list的头部插入。

empty():判断list是否为空

resize():如果调用resize(n)将list的长度改为只容纳n个元素,
		超出的元素将被删除,如果需要扩展那么调用默认构造函数T()将元素加到list末端。
		如果调用resize(n,val),则扩展元素要调用构造函数T(val)函数进行元素构造,其余部分相同。

clear():清空list中所有的元素

front():获得list容器中的头部元素

back():获得list容器的最后一个元素

pop_back():删除最后一个元素

pop_front():通过pop_front()删除第一个元素;序列必须不为空

assign():第一种情况是:l1.assign(n,val)将 l1中元素变为n个T(val)。
		  第二种情况是:l1.assign(l2.begin(),l2.end())将l2中的从l2.begin()到l2.end()之间的数值赋值给l1。

swap():交换两个链表(两个重载),一个是l1.swap(l2); 另外一个是swap(l1,l2),都可能完成连个链表的交换。

reverse():完成list的逆置

merge():合并两个链表并使之默认升序。
		l1.merge(l2,greater<int>()); 调用结束后l2变为空,l1中元素包含原来l1 和 l2中的元素

insert():在指定位置插入一个或多个元素

		l1.insert(l1.begin(),100); 在l1的开始位置插入100。

		l1.insert(l1.begin(),2,100); 在l1的开始位置插入2个100。

		l1.insert(l1.begin(),l2.begin(),l2.end());在l1的开始位置插入l2的从开始到结束的所有位置的元素。

erase():删除一个元素或一个区域的元素

		l1.erase(l1.begin()); 将l1的第一个元素删除。

		l1.erase(l1.begin(),l1.end()); 将l1的从begin()到end()之间的元素删除。


*/

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

void display(list<int>l)//输出链表
{
	list<int>::iterator iter;
	for(iter=l.begin();iter!=l.end();iter++)
	{
		cout<<*iter<<" ";
	}
	cout<<endl;
}
int main()
{
	list<int>l1;
	list<int>l2;
	list<int>l3;
	list<int>::iterator iter;
	int i;

	for(i=0;i<10;i++)//从尾部插入元素到l1
	{
		l1.push_back(i);
	}
	for( i=0;i<10;i++)//从头部插入元素到l2
	{
		l2.push_front(i);
	}
	for( i=0;i<10;i++)//从头部插入元素到l3
	{
		l3.push_front(i);
	}
	
	cout<<"链表l1:";
	display(l1);
	cout<<"链表l2:";
	display(l2);

	cout<<"改变l1的长度:";
	l1.resize(3);//改变链表的长度
	display(l1);

	l2.clear();//清空所有元素
	display(l2);

	cout<<"l1首元素:"<<l1.front()<<endl;//获得头部元素
	cout<<"l1尾元素:"<<l1.back()<<endl;//获得尾部元素

	cout<<"删除l1中的最后一个元素:"<<endl;
	l1.pop_back();//删除最后一个元素
	display(l1);
	cout<<"删除l1中的第一个元素:"<<endl;
	l1.pop_front();//删除第一个元素
	display(l1);

	cout<<"交换链表l1和l3:";
	swap(l1,l3);
	cout<<endl;
	cout<<"l1:";
	display(l1);
	cout<<"l3:";
	display(l3);

	cout<<"逆置l1后:";
	l1.reverse();//逆置
	display(l1);

	cout<<"合并l1和l3后:";
	l1.merge(l3,greater<int>());
	display(l1);
	
	cout<<"在l3开始位置插入5:";
	l3.insert(l3.begin(),5);
	display(l3);

	cout<<"在l3开始位置插入10个5:";
	l3.insert(l3.begin(),10,5);
	display(l3);

	cout<<"将l1从begin到end之间的元素删除:";
	l1.erase(l1.begin(),l1.end());
	if(l1.empty())
		cout<<"l1空!"<<endl;


	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值