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