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...