資料結構之單鏈表的刪除,修改,遍歷

2021-10-17 11:59:54 字數 2672 閱讀 6404

遍歷思路:1)先判斷鍊錶是否為空,如果為空直接輸出鍊錶為空然後退出遍歷方法,鍊錶為空的條件是:head.getnext()==null,即頭節點的下乙個節點為空

2)單鏈表的所有操作都需要乙個指標用來指向鍊錶的節點,所以先建立乙個節點指標並指向第乙個節點:heronode cur = head.getnext();

3)用while迴圈遍歷指標,此時的cur指向的是節點,退出迴圈的條件是當cur指標指向null時,即:cur==null

具體**如下(**還是在單鏈錶類內部所以可以直接得到head):

public

void

print()

heronode temp = head.

getnext()

;while

(true

) system.out.

println

(temp)

; temp = temp.

getnext();}}

鍊錶的修改思路:1) 按序號修改節點資訊,只能修改節點的其他資訊不能修改序號,需要給方法傳入乙個節點node,節點包括要修改的資訊和節點序號

2)先判斷鍊錶是否為空,如果為空直接輸出鍊錶為空然後退出修改方法,鍊錶為空的條件是:head.getnext()==null,即頭節點的下乙個節點為空

3)先建立乙個cur指標並指向第乙個節點,heronode cur = head.getnext(),遍歷鍊錶找到要修改的節點,找到節點的條件:node.getno==cur.getno,迴圈退出的條件有兩個,一是cur指標指向null時,這也說明了沒有要修改的節點。二是當cur指標指向的節點序號與傳來的node節點序號一致,說明找到待修改節點,退出迴圈。

具體**如下:

public

void

updatebyno

(heronode node)

heronode temp = head.

getnext()

; boolean flag =

false

;//標識是否有此編號的節點

while

(true)if

(temp.

getno()

==node.

getno()

) temp = temp.

getnext()

;}if(flag)

else system.out.

printf

("沒有編號%d的節點\n"

,node.

getno());}

該**在遍歷時先判斷指標指向是否為空再判斷指標指向節點的序號是否和傳來的node節點序號一致,兩個條件滿足乙個都退出迴圈,序號一致時給flag乙個標識,退出迴圈後cur指向的就是待修改的節點或者是指向null,此時判斷標識,如果標識flag為true就說明找到了。

按序號刪除節點:1) 刪除節點的操作核心是要找到待刪除節點的前乙個節點,因為單鏈表是單向的,不能回退。

2)像遍歷或者修改節點的操作類似,只不過定義的cur指標不能指向第乙個節點,而是指向head節點,遍歷鍊錶時的退出條件是cur指標指向的下乙個節點是否為空,或者cur指標指向的下乙個節點序號等於待刪除節點的序號

3)找到待刪除節點的前乙個節點之後,即cur指向待刪除節點的前乙個節點,此時讓cur的next域指向其next域的next域,cur.setnext(cur.getnext().getnext())

public

void

removebyno

(int no)

heronode temp = head;

boolean flag =

false

;//標識是否根據傳來的no找到節點

while

(true

)else

if(temp.

getnext()

.getno()

==no)

temp = temp.

getnext()

;}if(flag)

else system.out.

printf

("沒有編號%d的節點\n"

以上就是單鏈表的一些基本操作,後續文章將介紹一些單鏈表稍複雜操作

資料結構之單鏈表

date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...

資料結構之單鏈表

鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...

資料結構之單鏈表

由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大,會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。典型的單鏈表結構...