结点包括数据域和指针域, 最后一个指针域null。
优点:可以对任意位置快速插入或删除元素。动态存储分配,不会内存浪费和溢出。
缺点:对于容器的遍历速度没有数组快。占用空间比数组大。
STL中的链表 双向循环(最后一个节点不为null)链表,链表中的迭代器双向迭代。
函数原型:
#include<list>
list<int>lst(10,1000);//十个一千
lst.pushi_back(10);
push_back()是把插入元素直接放入链表结尾。
const_iterator:该类型只能用于读取容器内的元素,但不能改变其值。
a=swap(b);
list lst;
lst.assign(l2.begin(),l2.end());//区间赋值
lst.assign(10,100);//给10个100
lst.swap(l2);//交换
size();//大小
empty();//是否为空
insert中用迭代器给pos。
list不是连续存储,需要迭代访问,不能用中括号[]。
第一个元素front()
最后一个元素back()
支持++,–的找数据;单步双向寻找,+1-1易出错。不支持随即访问。
reverse反转链表
sort链表排序;默认升序
如果要改变升降序:
bool mycompare(int a,int b){
return a>b;//做降序,第一个数大于第二个数
}
aa.sort(mycompare);
for (list<int>::const_iterator b = aa.begin(); b != aa.end(); b++) {
cout << *b << " ";
}