C 模板類實現鍊錶

2021-10-05 08:51:14 字數 2868 閱讀 1628

注意

鍊錶中要包含node的結構體,用來把節點放進去

只有出現node就要加,不然會報錯

有類模板的重新編譯記得清空再重新生成

清除鍊錶時使用的迴圈清空頭結點的思想需要記得(c語言中一樣迴圈呼叫清除0號元素也可以)

debug和release編譯不同,一步一步執行時順序不一樣,不知道為啥了,不過不重要,結果一樣

自己寫的清空函式

template

<

typename t>

void link

::clear()

}

原本的清除函式

template

<

typename t>

void link

::clear()

//建立新的頭結點

head =

new node

; head-

>next =

null

; len =0;

}

需要增加的新節點(與線性表不同的地方)

template

<

typename t>

struct node

;

標頭檔案

template

<

typename t>

class

link

;

建構函式

template

<

typename t>

link

::link()

析構函式

template

<

typename t>

link::~

link()

len =0;

head =

null

;}

插入刪除和讀取

template

<

typename t>

int link

::insert

(const t& t1,

int pos)

if(pos > len)

for(

int i =

0;i < pos;i++

)//新節點先連線

node-

>next = current-

>next;

current-

>next = node;

len++

;//記得加長度

return0;

}template

<

typename t>

t link

::del

(int pos)

if(pos >= len)

for(

int i =

0;i < pos;i++

) node

* node =

null

; node = current-

>next;

t tmp = node-

>t;

current-

>next = node-

>next;

//刪掉node的記憶體

delete node;

len--

;//長度減1

return tmp;

}template

<

typename t>

t link

::get

(int pos)

if(pos >= len)

for(

int i =

0;i < pos;i++

) current = current-

>next;

return current-

>t;

}

最後是測試cpp

teacher t1, t2, t3;

t1.age = 31;

strcpy(t1.name, "t1t1t1");

strcpy(t1.worknum, "num1");

t2.age = 32;

strcpy(t2.name, "t2t2t2");

strcpy(t2.worknum, "num2");

t3.age = 33;

strcpy(t3.name, "t3t3t3");

strcpy(t3.worknum, "num3");

link

link

;//類模板的引數 記得<

>

link.insert(t2, 0)

; link.insert(t1, 0)

; link.insert(t3, 2)

; cout << link.getlen(

)<< endl;

teacher tmp;

for(int i = 0;i < link.getlen(

);i++)

tmp = link.del(1)

; cout << tmp.name << endl;

link.clear(

);

模板類實現鍊錶

原創 我們在很多情況下會遇到這樣的情況,比如說,乙個鍊錶,他的資料型別有int,char,double等,這個時候我們可能直觀的理解就是建立多個struct node 這樣固然能狗解決問題,但是這並不可取,太過死板,這時候利用c 中的模板,可以很好的解決這一問題 關於模板那裡的東西,可以檢視相關的書...

C 鍊錶類模板

鍊錶 list 即雙向鍊錶容器,它不支援隨機訪問,訪問鍊錶元素要指標從鍊錶的某個斷點開始,插入和刪除操作所花費的時間是固定的,和該元素在鍊錶中的位置無關。list在任何位置插入和刪除動作都很快,不像vector只能在末尾操作。建立list鍊錶類模板的方法 include 呼叫list標頭檔案.lis...

c 模板鍊錶實現

簡介 主要是利用模板實現鍊錶的操作。模板的使用,使得程式的開發量大大地減少。可以先定義乙個鍊錶linklist,之後可以定義自己的類了 例如 student類 使用時就可以這樣呼叫了 linklistl 下面便是鍊錶的實現 linklist.cpp templatestruct node templ...