1. 程式人生 > >c++stl的list(雙向連結串列)

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()方法刪除一個元素,值相同的元素都會被刪除,引數為元素的值,而不是迭代器的位置

,例如:t.remove(8);

(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