一、鍊錶的介紹
1.鍊錶是以節點的方式來儲存。
2.每個節點包含data域,next域:指向下乙個節點。
3.鍊錶的各個節點不一定是連續儲存的。
4.鍊錶分帶頭節點的鍊錶和沒有頭節點的鍊錶,根據實際的需求來確定。
二、單鏈表的使用
1.使用帶head頭的單向列表實現-水滸英雄排行榜管理
1⃣️完成對英雄人物的增刪改查操作。
2⃣️第一種方法在新增英雄時,直接新增到鍊錶的尾部
3⃣️第二種方式在新增英雄時,根據排名將英雄插入到指定位置(如果有這個排名,則新增失敗,並給出提示)。
2.思路分析
3.
//定義heronode,每個heronode物件就是乙個節點
public
class
heronode
//為了顯示方法,我們重寫tostring
@override
public string tostring()
';}}
public
class
singlelinkedlist
//如果沒有找到,就將temp後移
temp=temp.next;
}//當退出while迴圈時,temp就指向了鍊錶的最後
//將最後這個節點的next指向新的節點
temp.next=heronode;
}//第二種方式在新增英雄時,根據排名將英雄插入到指定位置
//如果喲這個排名,則新增失敗,並給出提示
public
void
addbyorder
(heronode heronode)
if(temp.next.no>heronode.no)
else
if(temp.next.no==heronode.no)
temp=temp.next;
//後移,遍歷當前的鍊錶
}//判斷flag的值
if(flag)
else
}//修改節點的資訊,根據no編號來修改,即no編號不能改
//說明:
//1.根據newhernode的no來修改即可
public
void
update
(heronode newheronode)
//找到需要修改的節點,根據no編號
//定義乙個輔助變數
heronode temp=head.next;
boolean flag=
false
;//表示是否找到該節點
while
(true)if
(temp.no==newheronode.no)
temp=temp.next;
}//根據flag判斷是否找到要修改的節點
if(flag)
else
}//刪除節點
//思路
不能動,因此我們需要乙個temp輔助節點找到待刪除節點的前乙個節點
//2.說明我們在比較時,是temp.next.no和需要刪除的節點的no比較
public
void
del(
int no)
if(temp.next.no==no)
temp=temp.next;
}//判斷flag
if(flag)
else
}//顯示鍊錶[遍歷]
public
void
list()
//因為head節點不能動,因此我們需要乙個輔助變數temp來遍歷
heronode temp=head.next;
while
(true
)//輸出節點的資訊
system.out.
println
(temp)
;//將temp後移
temp=temp.next;}}
}public
class
singlelinkedlistdemo
}
單鏈表反轉詳解
1.提出問題 現有乙個鍊錶,包含資料 1 2 3,現需要將該鍊錶的資料進行反轉,變為3 2 1。2.主要方法 public void reverse 對整個鍊錶反轉 public node reverse node curr 反轉鍊錶中的某個結點curr,並把反轉後的curr結點返回 3.演算法原理...
C語言 單鏈表詳解
鍊錶是一種常見的基礎資料結構,結構體指標在這裡得到了充分的利用。鍊錶可以動態的進行儲存分配,也就是說,鍊錶是乙個功能極為強大的陣列,他可以在節點中定義多種資料型別,還可以根據需要隨意增添,刪除,插入節點。鍊錶都有乙個頭指標,一般以head來表示,存放的是乙個位址。鍊錶中的節點分為兩類,頭結點和一般節...
單鏈表(合併單鏈表)
單鏈表遍歷 單鏈表遍歷是從單鏈表頭指標head開始訪問,沿著next指標所指示的方向依次訪問每乙個結點,且每個結點只能訪問依次,直到最後乙個結點為止。遍歷時注意,不要改變head指標的指向。因此一般設定另外的乙個指標變數如p,p從head開始依次訪問乙個結點,直到鍊錶結束,此時p null,完成依次...