C 鍊錶類模板

2021-10-02 09:56:04 字數 2508 閱讀 5055

鍊錶(list),即雙向鍊錶容器,它不支援隨機訪問,訪問鍊錶元素要指標從鍊錶的某個斷點開始,插入和刪除操作所花費的時間是固定的,和該元素在鍊錶中的位置無關。list在任何位置插入和刪除動作都很快,不像vector只能在末尾操作。

建立list鍊錶類模板的方法:

#include

//呼叫list標頭檔案..

....

listl;

//定義乙個list

//list表示宣告乙個鍊錶,表示鍊錶的型別,l表示鍊錶名。

list物件主要成員函式說明:

只是一些常用的,其它還有很多list函式。

函式說明

begin

返回指向鍊錶第乙個元素的迭代器

end返回指向鍊錶最後乙個元素的迭代器

size

返回鍊錶的大小

clear

刪除鍊錶中所有元素

erase(start,end)

刪除迭代器從start到end範圍內的向量

erase(i)

刪除迭代器第i個元素

insert(i,x)

把值x插入到由迭代器指明的第i個位置

insert(i,start,end)

把迭代器從start到end範圍的元素插入到指明的第i個位置

insert(i,n,x)

把x的n個副本插入到由迭代器指明的第i個位置

push_back(x)

將值x放到鍊錶末尾

push_front(x)

將值x放到鍊錶首部

pop_back

刪除鍊錶最後乙個元素

pop_front

刪除鍊錶第乙個元素

resize(n,x)

設定鍊錶大小為n,初始值為x

reverse

顛倒元素的順序

swap(list)

交換兩個鍊錶的內容

可以發現,list鍊錶所支援的操作與vector向量很相近,但這些操作的實現原理不盡相同,執行效率也不一樣。list雙向鍊錶的優點是插入元素的效率很高,缺點是不支援隨機訪問,也就是說,鍊錶無法像陣列一樣通過索引來訪問,形如:

list<

int>l;l[3

]=4;

//錯誤

cout<

;//錯誤

鍊錶無法通過索引進行賦值和輸入輸出。

關於vector向量的學習————》c++向量類模板

迭代器對list雙向鍊錶各個元素的訪問,通常使用迭代器。

迭代器定義方法:

list<

int>

::iterator it=l.

begin()

;

定義了乙個迭代器it指向雙向鍊錶 l 的開始指標。

list雙向鍊錶與迭代器的入門應用

源**:

#include

#include

//list標頭檔案

using

namespace std;

intmain()

;//定義陣列a

l=list<

int>

(a,a+8)

;//將陣列a賦值給l

l.sort()

;//排序

list<

int>

::iterator it1=l.

begin()

;//定義迭代器it1指向雙向鍊錶 l 的開始指標

for(

;it1!=l.

end(

);it1++

) cout<<

*it1<<

" ";

//通過變更it1的指向遍歷輸出l中的所有元素

cout<

l.insert

(l.end()

,9);

//將9插入到l的末尾

list<

int>

::iterator it2=l.

begin()

;for

(;it2!=l.

end(

);it2++

) cout<<

*it2<<

" ";

cout<

list<

int>

::iterator it3=l.

begin()

; cout<<

*it3+3;

//通過迭代器加減的方式取代索引輸出

return0;

}

值得一提的是,迴圈終止的條件是it!=l.end()而非人們慣用的it結果圖:

C 模板類實現鍊錶

注意 鍊錶中要包含node的結構體,用來把節點放進去 只有出現node就要加,不然會報錯 有類模板的重新編譯記得清空再重新生成 清除鍊錶時使用的迴圈清空頭結點的思想需要記得 c語言中一樣迴圈呼叫清除0號元素也可以 debug和release編譯不同,一步一步執行時順序不一樣,不知道為啥了,不過不重要...

鍊錶類模板

include using namespace std class cnode 定義乙個節點類 template 定義類模板 class clist 定義clist類 type movetrail 獲取尾節點 return ptmp 返回尾節點 void addnode type pnode 新增節...

c 鍊錶(用類加模板)

話不多說,貼 才是王道 為了方便指標倒置加了一下小插曲 include include template 這是模板型別定義t class links p為已存在的節點p中的 forward是前乙個節點,也是方便倒置而設計的,建構函式初始化 void insert t p h next p p nex...