單向/雙向(引入了 prev 引用)
帶傀儡節點/不帶傀儡節點(dummy node)
帶環/不帶環
遍歷方式可利用 while 或者 for 迴圈來進行實現,主要**塊可展示為:
//for迴圈實現
for(node cur = head; cur != null; cur = cur.next)
//while迴圈實現
node cur = head;
while(cur != null)
1.遍歷 不帶傀儡節點的鍊錶
//遍歷 不帶傀儡節點的鍊錶
public
static
void
print
(node head)
}
2.遍歷 帶傀儡節點的鍊錶
//遍歷 帶傀儡節點的鍊錶
public
static
void
printwithdummy
(node head)
}
//尾插乙個節點
public
static
void
inserttail
(node head,
int val)
// 1)找到末尾節點
node prev = head;
while
(prev != null)
//迴圈結束的時候,cur 就是最後乙個節點
node newnode =
newnode
(val)
; newnode.next = prev.next;
prev.next = newnode;
}
//inserttail方法
public
static node inserttail
(node head,
int val)
node prev = head;
while
(prev.next != null)
newnode.next = prev.next;
prev.next = newnode;
return head;
}//main函式
public
static
void
main
(string[
] args)
//刪除節點-按值刪除
public
static
void
remove1
(node head,
int value)
// 2)迴圈結束,prev 指向待刪除的前乙個節點
if(prev == null || prev.next == null)
// 3)刪除這個節點 todelete 指向待刪除節點
node todelete = prev.next;
prev.next = todelete.next;
}//刪除節點-按位置刪除
public
static
void
remove2
(node head,node todelete)
if(prev == null)
// 2.進行刪除
prev.next = todelete.next;
}//按照 節點下標 進行刪除
public
static
intsize
(node head)
return size;
}public
static
void
remove3
(node head,
int index)
if(index ==0)
// 1.找到待刪除節點前乙個的位置:即 index-1
node prev = head;
for(
int i =
0;i < index -
1; i++
)//迴圈結束之後,prev 指向待刪除節點的前乙個位置
// 2.進行刪除操作
node todelete = prev.next;
prev.next = todelete.next;
}
2.「移花接木」刪除節點
不涉及鍊錶的遍歷,直接將待刪除節點之後的節點複製到待刪除節點處
缺點:無法刪除最後乙個節點
//「移花接木」刪除節點
public
static
void
remove4
(node head,node todelete)
鍊錶的基本操作
include include include include using namespace std struct listnode void initnode listnode node bool isempty listnode head void pushfront listnode hea...
鍊錶的基本操作
鍊錶操作是最基本的 必須掌握的知識點,最好滾瓜爛熟,透徹理解。工作時間短用的也不夠頻繁,還是總結一下比較好,以加強鞏固。1.單鏈表 結點形式 區分幾個概念 首節點 第乙個元素所在節點。頭指標 指向首節點的指標。頭結點 為了操作方便,在第乙個節點之前附設的乙個結點,此時指向頭結點的為頭指標。基本操作 ...
鍊錶的基本操作。。。
include node.h 列印鍊錶 void print node head printf n 從尾部插入 void insert tail node head,const int d while t next null t next p p next null 從頭部插入 void inser...