#include<list>
双向循环链表
list结点的三个域:数据域、前驱元素指针域、后继元素指针域
对于list的迭代器,只有++或--的操作,无+n或-n的操作
创建list对象:
list<int> l;
list<int> l(10);
插入和遍历:
l.push_back(1); //尾插,链表自动扩张
l.push_front(2); //头插,链表自动扩张
insert(l.begin()++, 3); //向迭代器位置插入
for(list<int>::iterator it = l.begin(); it != l.end(); ++it)cout << *it << endl;
for(list<int>::reverse_iterator rit = l.rbegin(); rit != l.rend(); ++it)cout << *rit << endl;
删除:
l.pop_front();
l.pop_back();
l.remove(2);//链表中的2都会被删除
l.erase(l.begin()++);
l.clear();
查找:
声明#include<algorithm>
l.find(l.begin(), l.end(), 2); //找到,返回迭代器位置;未找到,返回end()
排序:
l.sort(); //升序排序
删除连续元素,只保留一个:
l.unique(); //1 1 2 2 3 3 -> 1 2 3