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;
}