C 自定義鍊錶

2021-07-23 01:56:36 字數 1331 閱讀 8191

c#中的鍊錶結構在程式中十分常見,用處很廣。

鍊錶結構中,每個節點由值部分和指標部分組成,值部分即儲存的資料,指標指向下乙個節點,從而使得每個節點能夠連線起來,值和指標就像骨骼和關節一樣。

自定義鍊錶,首先定義出節點的結構,用類表示為:

public class node
定義完節點,下面開始構造list鍊錶結構。自定義鍊錶中屬性有:元素個數、索引器,方法有新增、插入、遍歷。其中遍歷方法需要實現ienumerable介面。

改變鍊錶中節點的指向。

1.新增方法add(t value)

(1)定義全域性變數first和last表示鍊錶中的根節點和最後乙個節點;

(2)判斷last是否為空,為空證明鍊錶中沒有元素,將需要插入的value值賦予給first,然後讓last指向first;

(3)當last不為空時,新建節點node並賦予value值,用來表示插入的節點。將當前最後乙個節點last指標指向node,然後node節點即成為最後乙個節點

(4)元素個數+1

2.插入方法insert(t value,int index)

(1)新建要插入的節點node並賦予value值;

(2)如果index=0,則需要更換根節點,讓node指向first,然後重新賦予first的值為node;

(3)如果index>0,則先找出index-1位置的節點temp,讓node指向原來index位置的節點(temp.point),然後讓temp指向node節點,這樣node便成為了index處的節點。

(4)元素個數+1

mylist類**

public class mylist:ienumerable

}//索引器,根據節點一一連線的特點,利用while迴圈找出第index個節點

public t this[int index]

return node.value;}}

//新增方法

public void add(t value)

//最後乙個節點不為空

else

}//插入方法

public void insert(t value ,int index)

//如果插入非0的位置

else

//將節點插入

newnode.point = node.point;

node.point = newnode;

}count++;

}//foreach遍歷,需要實現ienumerable介面

public ienumerator getenumerator()

}}

自定義鍊錶

鍊錶是非連續 無順序的資料結構,鍊錶中元素與元素之間的記憶體位址沒有順序關係。鍊錶由乙個個結點組成,結點中儲存兩類資訊,第一類是儲存入結點的資料,第二類是結點的指向。鍊錶分為單項鍊表,雙向鍊錶,環形鍊錶,單項鍊表中只有乙個結點指向,指向的的下乙個結點的記憶體位址,只能單向移動,單項操作 雙向鍊錶有兩...

自定義鍊錶

author qcg version 2019 5 6.description 自定義鍊錶 頭尾部的兩步操作 1.插入節點 next指向node 2.變更節點 last指標後移 node.next insertnode 這是插入元素的操作 public class mylinkedlist node...

自定義鍊錶

大多數人使用鍊錶都是看了一遍懵懵懂懂的,想要真正學習的人建議潛下心來自定義乙個鍊錶試試,自己搭建高樓大廈和看別人搭建是兩碼事,在自定義的過程中會明白自己建立的美妙感覺 public class node public node node privious,node next,object eleme...