头文件:#include<list>
链表的定义:
list<type>lst
list<type>lst(size)
list<type>lst(size,num)
list<type>lst(lst2)//拷贝lst2到lst中
list<type>lst(lst2.begin(),lst.end())//效果同第四种
实例:
list<int>l1;
list<int>l2(5);
list<int>l3(10, 5);
list<int>l4(l3);
list<int>l5(l3.begin(), l3.end());
链表的基本操作:
list<type>lst;
判断链表是否为空:lst.empty();
头插:lst.push_front(val);
头删:lst.pop_front();
尾插:lst.push_back(val);
尾删:lst.pop_back();
得到第一个元素:lst.front();
得到最后一个元素:lst.back();
插入元素:lst.insert(pos,val);
插入几个元素:lst.insert(pos,num,val);
删除元素:lst.erase(pos);//不能删除指定区间的元素
排序:lst.sort();//默认升序
翻转链表:lst.reverse();//1235变54321
遍历整个链表:
for(list<type>::iterator it=lst.begin();it!=lst.end();it++) { cout<<*it<<endl; }
清空链表:lst.clear();
重新设置链表:lst.assign(num,val);
删除链表内的重复元素:lst.uniqe();
删除链表内的某个元素(所有):lst.remove(num);
删除某个符合条件的元素;lst.remove_if(函数指针/函数名);
实例:
list<int>lst;
if (lst.empty())
{
cout << "empty" << endl;
}
else
{
cout << "not empty" << endl;
}
lst.push_front(100);
lst.pop_front();
lst.push_back(99);
lst.pop_back();
for (int i = 1; i <= 10; i++)
{
lst.push_back(i);
}
cout << lst.front() << endl;
cout << lst.back() << endl;
lst.insert(lst.begin(), 88);
lst.insert(lst.begin(), 5, 88);
list<int>k(5, 77);
lst.insert(lst.begin(), k.begin(), k.end());
lst.erase(lst.begin());
lst.sort();
lst.reverse();
list<int>::iterator it = lst.begin();
for (it = lst.begin(); it != lst.end(); it++)
{
cout << *it << ' ';
}
cout << endl;
lst.clear();
lst.assign(8, 1);
lst.unique();
lst.assign(8, 1);
lst.remove(1);
for (int i = 1; i <= 10; i++)
{
lst.push_back(i);
}
lst.remove_if(check);
链表的迭代器只能++,不能+整型,不然会报错
(猜测应该是链表的特性决定的)