詳解單鏈表

2021-10-05 02:54:51 字數 2133 閱讀 8125

一、鍊錶的介紹

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,完成依次...