鍊錶是有序的列表,但是它在記憶體中是儲存如下
鍊錶是以節點的方式來儲存的
鍊錶的各個節點不一定是連續儲存的
鍊錶分帶頭結點的鍊錶和不帶頭結點的鍊錶
新增先建立乙個 head 頭結點,作用就是表示單鏈表的頭
後面我們每新增乙個結點,就直接加入到鍊錶的最後
遍歷:通過乙個輔助變數,幫助來遍歷整個鍊錶
第一種方式:給鍊錶新增結點時,直接新增到鍊錶的尾部
第二種方式:新增結點,根據結點編號將結點插入到指定位置
1、定義乙個結點類(heronode),每個類物件都是乙個鍊錶的結點
class
heronode
// 重寫tostring方法
@override
public string tostring()
}
2、構建乙個單鏈表 singlelinkedlist
class
singlelinkedlist
2.1、在單鏈表中新增結點
public
void
add(heronode heronode)
// 如果沒有找到最後,就將 temp後移
temp = temp.next;
}// 當退出 while 迴圈的時候,temp 就指向了鍊錶的最後
// 將最後這個節點的 next 指向新的節點
temp.next = heronode;
}
3、列印出鍊錶
public
void
list()
// 因為頭節點,不能動,因此我們需要乙個輔助變數
heronode temp = head.next;
while
(true
)// 輸出節點的資訊
system.out.
println
(temp)
; temp = temp.next;
}}
4、進行測試
public
static
void
main
(string[
] args)
步驟:
首先找到新新增的結點的位置,是通過輔助變數(temp),通過遍歷來儲存
新的結點.next = temp.next
將 temp.next = 新的結點
新增規則:
因為頭節點不能動,因此我們還需要乙個輔助指標來幫我們找到新增的位置
待插入的位置應該是在輔助變數結點 temp 之後,temp.next 之前
寫乙個addbyorder的方法
public
void
addbyorder
(heronode heronode)
if(temp.next.no > heronode.no)
if(temp.next.no == heronode.no)
temp = temp.next;
// 後移,相當於在遍歷當前的鍊錶}if
(flag)
else
}
注意點:
判斷 temp 是不是在最後乙個結點
判斷待插入的結點是不是已經存在了,如果存在了輸出已經存在
修改結點通過結點的編號來修改,但是結點的編號是不可以改變的
public
void
update
(heronode newheronode)
// 找到需要修改的節點,根據 no 編號
// 定義乙個輔助變數
heronode temp = head.next;
// 首先指向的 0 號節點
boolean flag =
false
;while
(true)if
(temp.no == newheronode.no)
temp = temp.next;
}// 根據 flag
if(flag)
else
}
思路:
head 不能用,找乙個輔助結點 temp 用來指向待刪除的前乙個結點
在進行比較的時候是temp.next 與 要刪除的結點的 編號(no) 進行比較
public
void
del(
int no)
if(temp.next.no == no)
temp = temp.next;
}// 判斷 flag
if(flag)
else
}
單鏈表(演算法與資料結構)
鍊錶 單鏈表 為每個結點新增1個指標域,每個結點包括兩個域 資料域 存放元素本身資訊 指標域 存放後繼結點的儲存位置 指向鍊錶中第乙個結點的指標,稱為這個鍊錶的頭指標。最後乙個元素的指標不指向任何結點,稱為空指標,圖示中用 表示,在演算法中用 null 表示 帶頭結點的單鏈表 頭結點 可以不存資訊,...
資料結構與演算法 單鏈表
單鏈表的建立 1.建立乙個head頭節點,作用就是表示單鏈表的頭 2.後面我們每新增乙個節點,就直接加入鍊錶的最後 定義heronode,每個heronode物件就是乙個節點 class heronode 為了顯示方法,重新tostring public string tostring 定義sing...
資料結構與演算法 單鏈表(一)
單鏈表的頭插法,插入時就是逆序。insertlist 還不完善。include include define error 0 define ok 1 typedef int status typedef int elemtype typedef struct nodenode typedef str...