學習單鏈表的原始碼專案:
鍊錶是用一組任意的儲存單元來儲存線性表中的資料元素(在儲存單元中可以是連續的,也可以是不連續的)。鍊錶在儲存資料元素時,除了儲存資料元素本身的資訊外,還要儲存與它相鄰的資料元素的儲存位址資訊。這兩部分資訊組成該資料元素的儲存映像,稱為節點。
節點的形象圖如下:
首先定義乙個類node來表示這些節點:
public網上找到 ,把迴圈列表 和 雙向鍊錶都弄上去了,也好提前了解下class node
public node(nodep)
public
node(t val)
public
node()
#endregion
//資料域屬性
public
t data
set }
//引用域屬性
public nodenext
set }
}
因此要定義乙個類表示整個鍊錶,其中中間當然運用到了之前寫node類,類中的屬性如下:
private nodehead;//接下來就是實現之前講的順序表中定義好的介面單鏈表頭引用
//頭引用屬性
public nodehead
set }
//建構函式
public
linklist()
//實現這些介面都不難,還是要理解鍊錶的具體操作原理,只是記**是沒用的,不用多久就忘的差不多,p.next等這些地方可以聯想到c中的指標,不過c中的指標有時挺危險的,c#中的也許就安全多了吧。求單鏈表長度
public
intgetlength()
return
len;
}//清空單鏈表
public
void
clear()
public
bool
isempty()
else
}public
bool
isfull()
//在單鏈表末尾新增新元素
public
void
p =head;
while(p.next!=null
)
p.next =q;
}//在單鏈表第i個節點位置插入乙個item的節點
public
void insert(t item, int
i)
if (i == 1
)
node
p =head;
node
r = new node();
int j = 1
;
while (p.next != null && j
if (j ==i)
}//刪除單鏈表第i節點
public t delete(int
i)
node
q = new node();
if (i == 1
)
node
p =head;
int j = 1
;
while (p.next != null && j
if (j ==i)
else
}//獲取單鏈表第i個資料元素
public t getelem(int
i)
node
p = new node();
p =head;
int j = 1
;
while (p.next != null && j
if (j ==i)
else
}//在單鏈表中查詢值為value的節點
public
intlocate(t value)
node
p = new node();
p =head;
int i = 1
;
while (!p.data.equals(value) && p.next != null
)
return
i; }
然後再玩玩一些經典題目,首先就是單鏈表倒置
//再做個題目:構造單鏈表hb,要求hb只包含ha表中所有值不相同節點-----------------------------------單鏈表擴充套件方法---------------------------------------------
//////
單鏈表倒置
/// ///
public
void reverslinklist(linklisth)
}
//////構造單鏈表hb,要求hb只包含ha表中所有值不相同節點
/// ///
///public linklistpurge(linklistha)
if(q==null
)
}return
hb; }
C 資料結構 單鏈表
c 實現 首先,構造乙個單鏈表的節點類 class link 然後是以這個節點類為基礎,建立單鏈錶類 這裡簡單實現了單鏈表的兩個功能新增和輸出 class linklist if head.next null else if head.next null 列印全部資料 public void pri...
c 資料結構單鏈表
鍊錶定義 typedef struct linklistlinklist,linknode linklist 表示頭結點,linknode 表示節點linklist head linknode node 鍊錶初始化 bool linkinit linklist l l next null l dat...
C 資料結構 單鏈表
單鏈表的實現 include using namespace std template typename t struct node template typename t class linklist template typename t linklist linklist template t...