c++stl的list(雙向連結串列)
1.list初始化:
(1)list<int> t; //沒有任何元素
(2)list<int> t(10); //建立有10個元素的連結串列
(3)list<int> t(10,3); //建立有10個元素的連結串列,並且每個元素為3
2.對連結串列進行插入操作:
(1)前插法:在連結串列頭部插入新元素,連結串列自動擴張,形式:
t.push_front(8);
(2)尾插法:在連結串列尾部插入新元素,連結串列自動擴張,形式:
t.push_back(9);
(3)中間插入:用insert()函式,引數是要插入位置的迭代器,例如:
it=t.begin();
It++; //注意連結串列的迭代器只能進行++或--操作,而不能進行+n
t.insert(it,20); //操作
3.連結串列的遍歷:
(1)反向遍歷:形式:
list<int>::reverse_iterator rit;
for(rit=t.rbegin();rit!=t.rend();rit++)
(2)正向遍歷:形似:
list<int>:iterator it;
for(it=t.begin();it!=t.end();it++)
4.刪除元素的方法
(1)remove()方法刪除一個元素,值相同的元素都會被刪除,引數為元素的值,而不是迭代器的位置
(2)使用pop_front()方法刪除連結串列首元素,例如: t.pop_front();
(3)使用pop_back()方法刪除連結串列尾元素,例如:t.pop_back();
(4)使用erase()方法刪除迭代器位置上的元素,例如:
it=t.begin();
it++; //注意連結串列的迭代器只能進行++或--操作,而不能進行+n
it++; //操作,但是for(it=t.begin();it!=t.end();it++)這個不影響
t.erase(it);
(5)clear(),清空連結串列,例如:t.clear();
(6)size(),求元素的個數,例如:cout<<t.size() <<endl;
(7)find(),在連結串列中查詢元素,標頭檔案為#include<algorithm>若找到,則返回該元素,迭代器的位置,若找不到,則返回end()迭代器的位置。查詢的形式為:
list<int>::iterator it;
it=find(t.begin(),t.end(),8); //這點和其他的不同,list的要有查詢區間的
(8)sort()方法對連結串列進行排序,預設的是升序排列,形式:t.sort();
(9)unique()方法可以刪除連續重複的元素,注意是連續重複的元素,
例如是1 2 3 4 1 則不可刪除1。