list双向链表容器应用基础(创建、遍历、插入、删除、归并、排序

不同于采用线性表顺序存储结构的vector和deque容器,list双向链表中任一位置的元素差值、插入和删除,都具有高效的常数阶算法时间复杂度O(1)。

头文件

#include<list>

创建list对象list<int>l list<int>l(10);//list对象l有10个元素,每个元素初始值为。list<double>l(10,5.6); list<char>l1(5,’a’); list<char>l2(l1); 5)list(const InputIterator first, const InputIterator last,const A& a=A());//利用int数组iArray,创建一个list对象l intiArray[]={1,2,3,4,5,6,7}; list<int>l(iArray, iArray+7); // 创建list对象初始化赋值

利用list提供的push_back函数,可将元素依次链入链表中。push_back函数常用于list容器的初始化。

元素的遍历访问

由于链表中元素需要一个个元素遍历,因此,list元素的遍历只能使用迭代器的方式进行。

#include <iostream>#include <list>using namespace std;int main (){int Array[] = {16,2,77,29};//用上面第五种方式创建list对象list<int> mylist(Array,Array+sizeof(Array)/sizeof(int));//遍历输出for (list<int>::iterator it = mylist.begin(); it != mylist.end(); it++)std::cout << *it << ' ';std::cout << '\n';return 0;}

list链表元素的插入

由于list链表元素的插入不需要对其他元素进行移位拷贝,,因此

voidpush_front(constT&);//头部插入

具体实例与前篇deque的应用相似,这里不再多说。

list链表元素的删除list链表的归并

splice

position

i

list从merge 函数的源码可看出, x

#include <list>#include <iostream>using namespace std;void print(list<int>& l);int main(){list<int> l;list<int> carry;for (int j=1; j<=10; j++){l.push_back(j);}// splice() 函数carry.splice(carry.begin(), l, ++l.begin());// 打印carrycout << "carry 的链表元素为: ";print(carry);// 打印lcout << "l 的链表的元素为:";print(l);// merge() 函数用法list<int> x;x.push_back(30);x.push_back(31);x.push_back(32);l.merge(x);// 打印xcout << "x 的链表元素为空";print(x);// 打印lcout << "l 的链表元素为:";print(l);return 0;}// list 链表打印void print(list<int>& l){list<int>::iterator i, iend;iend = l.end();for (i=l.begin(); i!=iend; ++i)cout << *i << ' ';cout << endl << endl;}

list的元素排序

"<"

#include <list>#include <iostream>using namespace std;void print(list<int>& l);int main(){list<int> l; for(int j=18; j>=0; j–)l.push_back(j);cout << "排序前: " ; print(l);//调用list<int>::sort()函数排序l.sort();cout << "排序后: " ; print(l);return 0;}void print(list<int>& l){list<int>::iterator i,iend;iend=l.end();for(i=l.begin(); i!=iend; i++)cout << *i << ' ';cout << endl;}

list的连续重复元素的剔除#include <list>#include <iostream>using namespace std;int main(void){ list<int> l;l.push_back(6); l.push_back(8);l.push_back(6);l.push_back(6);l.push_back(6);l.push_back(9);l.push_back(13);l.push_back(6);l.unique();list<int>::iterator i,iend;iend=l.end();for(i=l.begin(); i!=iend; i++)cout << *i << ' ';cout << endl;return 0;}

此文为本人原创,转载请注明出处:

版权声明:本文为博主原创文章,未经博主允许不得转载。

一个人的旅行,反而会更贴近自己的内心,

list双向链表容器应用基础(创建、遍历、插入、删除、归并、排序

相关文章:

你感兴趣的文章:

标签云: