List 雙向鍊錶

2022-08-15 00:03:07 字數 2404 閱讀 6388

list是一種雙向鍊錶結構,可以從第乙個元素開始刪除、插入,也可以從最後乙個元素刪除、插入,下面介紹一下 list 中常用的幾個函式;

一、list 中的 begin 和 end 函式 ;

和其他幾種資料結構差不多,都是用來從第乙個元素,訪問到最後乙個元素,返回的是當前指標;

listl ;

*(l.begin())  // 輸出第乙個元素

*(l.end())   // 輸出最後乙個元素的下乙個元素

二、list 中的 rbegin 和 rend 函式

也和其他幾種資料結構差不多,從最後乙個元素訪問到第乙個元素; 返回值如果需要存入乙個變數中,這個變數應該這樣定義 

list::reverse_iterator iter ;

listl ;

iter = l.rbegin() ;

*iter     //  輸出最後乙個元素

iter = l.rend() ;

*iter      // 輸出第乙個元素前面的乙個元素 

三、list 中的 empty 函式

listl ;

l.empty() ;  // 如果鍊錶為空則返回 true ,否則返回 false ;

四、list 中的 size 函式

listl(5 , 10) ;

l.size() ;   // 返回鍊錶中元素的個數

五、list 中的 front 和 back 函式

listl(5,10) ;

l.front() ;    // 返回第乙個元素

l.back() ;      //  返回最後乙個元素

六、list 中的 assign 函式

assign 函式用來對鍊錶物件的重新分配 ;

listl1 ;

listl2 ;

l1.assign(5,10) ;    // 向鍊錶中新增 5 個元素 10 ;

l1.assign(5,11) ;    // 把原來的 5 個元素 10 改為 11 ;

l2.assign( l1.begin() , l1.end() ) ;   將l1中的元素複製給l2 ;

int a = ;

l2.assign(a,a+5) ;     // 把陣列 a 中的資料複製到 l2 中 ; 

七、list 中的 push_front、push_back、pop_front、pop_back 函式

這幾個函式就是雙向鍊錶的特殊之處,可以從頭插入、刪除,也可以從尾部插入和刪除

listl(5,10) ;

l.push_back(5) ;  // 從最後插入乙個元素 5 ;

l.pop_back() ;    // 刪掉最後乙個元素

l.push_front(5) ;  //在第乙個元素前面插入乙個元素 5 ;

l.pop_front() ;   // 將第乙個元素刪除掉

八、list 中的 insert 函式

insert 函式中的引數可以有兩個,也可以由三個,當引數有兩個時,第乙個代表在某個元素的前面,第二個引數代表要插入的數值;

當引數有三個時,第乙個代表在某個元素之前插入,第二個元素和第三個元素代表要插入的範圍;

listl(5,10) ;

l.insert(l.begin(),5) ;      //在第乙個元素前插入乙個元素 5 ;

l.insert(l.begin(),5,2) ;     // 在第乙個元素前插入 5 個元素 2 ;

int a = ;

l.insert(l.begin(),a,a+5) ;        // 將陣列 a 插入到第乙個元素之前 ;

九、list 中的 erase 函式 

erase 用來刪除鍊錶中的資料元素

listl(5,10) ;

l.erase(l.begin()) ;  //刪除鍊錶中的第乙個元素

l.erase( l.begin() , l.end() )  // 刪除鍊錶中的所有元素,相當於 l.assign(0) ;

十、list 中的 resize 函式

resize 和 其他資料結構一樣,重新分配鍊錶的大小 ;

listl(5,10) ;

l.resize(3) ;    // 將鍊錶中原來的 5 個元素,縮短為現在的 3 個元素 ;

l.resize(8) ;    // 將鍊錶中原來的 3 個元素,擴大為現在的 8 個元素,擴大部分預設賦初值為 0 ;

l.resize(10,2) ;    // 將鍊錶中原來的 8 個元素,擴大為現在的 10 個元素,擴大部分賦值為 2 ;

十一、list 中的 clear 函式

listl(5,10) ;

l.clear() ;      //  清空鍊錶中的所有元素, 相當於l.assign(0) , 還相當於l.erase(l.begin() , l.end()) ;

List雙向鍊錶

include 宣告 list int mylist 定義 mylist.push front 1 頭部插入元素 mylist.push back 2 尾部插入元素 pop front 移除頭部元素 pop back 移除尾部元素 list int iterator lter 迭代器定義 iter ...

List環形雙向鍊錶

實現乙個環形的雙向鍊錶,鍊錶的每個節點都儲存三個資訊,當前節點的值value,前乙個節點的指標prev,後乙個節點的指標next。因為是環形的,所以最後乙個節點的next指向第乙個節點,而第乙個節點的prev指向最後乙個節點 如果只存在乙個節點,那麼這個節點的prev和next都會指向這個節點本身。...

c stl的list(雙向鍊錶)

1.list初始化 1 listt 沒有任何元素 2 listt 10 建立有 10個元素的鍊錶 3 listt 10,3 建立有 10個元素的鍊錶,並且每個元素為3 2.對鍊錶進行插入操作 1 前插法 在鍊錶頭部插入新元素,鍊錶自動擴張,形式 t.push front 8 2 尾插法 在鍊錶尾部插...