注意
鍊錶中要包含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...