增根據節點內某屬性來按照特定順序的新增刪改
查完整**
補充單鏈表是一種有序的列表
以節點的方式來進行儲存(鏈式儲存)
每個節點包含 data 域和 next 域
當節點沒有下乙個節點是,next為null
各個節點不一定連續存放
分為帶頭節點的和不帶頭節點的,根據需求來確定。
}[注]
此處重寫了 node 的 tostring 方法,方便列印節點資訊
class
singlelinkedlist
目標
將傳入的節點插入到當前鍊錶的末尾
思路從 head 開始遍歷,找到鍊錶末尾,將最後乙個節點的 next 指向新節點即可
**
public
void
add(
node newnode)
temp = temp.next;
}}
目標
將傳入的節點插入到當前鍊錶,並且要求鍊錶中的節點依據id從小到大的順序排列
思路[注] 本例按照id從小到大的順序
1.通過乙個輔助變數找到待新增的位置
}傳入 int 型別的 id 值,查詢對應id值的節點,並將其從鍊錶中刪除,如果未找到則刪除失敗
1.根據輔助變數找到待刪除節點的前一節點
2. temp.next = temp.next.next;
[注] 如果輔助變數指向待刪除節點的話,因為是單鏈表,無法訪問前一節點,因此無法刪除
刪除節點前
刪除節點後
;//用於表示當前鍊錶中是否已經有對應id值的節點
while
(true)if
(temp.next.id == id)
temp = temp.next;}if
(flag)
else
}傳入乙個新的節點,通過id找到待修改的節點,將舊節點的資訊替換
遍歷查詢即可
public
void
update
(node newnode)
var temp = head.next;
bool flag =
false
;//表示是否找到對應id的節點
while
(true)if
(temp.id == newnode.id)
temp = temp.next;}if
(flag)
else
}
通過傳入的id 值找到鍊錶中匹配的節點,並將節點返回
遍歷即可
public
node
find
(int id)
var temp = head.next;
bool flag =
false
;//表示是否找到對應節點
while
(true)if
(temp.id == id)
temp = temp.next;}if
(flag)
else
}
class
singlelinkedlist
public
singlelinkedlist()
public
void
add(
node newnode)
temp = temp.next;}}
public
void
insertbyorder
(node newnode)
if(temp.next.id == newnode.id)
else
if(temp.next.id > newnode.id)
temp = temp.next;}if
(flag)
else
}public
void
delete
(int id)
var temp = head;
var flag =
false
;while
(true)if
(temp.next.id == id)
temp = temp.next;}if
(flag)
else
}public
void
update
(node newnode)
var temp = head.next;
bool flag =
false
;while
(true)if
(temp.id == newnode.id)
temp = temp.next;}if
(flag)
else
}public
node
find
(int id)
var temp = head.next;
bool flag =
false
;while
(true)if
(temp.id == id)
temp = temp.next;}if
(flag)
else
}}
[注]建立乙個新的頭節點,遍歷當前鍊錶,使用頭插法將當前鍊錶所有節點插入新的頭節點中,最後讓煉表頭節點的 next 指向 新頭節點的 next 即可。
public
void
reverse()
var reversehead =
newnode(0
,"");
var cur = head.next;
node next =
null
;while
(cur !=
null
) head.next = reversehead.next;
}
C 單鏈表實現
1 單向鍊錶 單向鍊錶 include include class cnode 節點類 class clist 鍊錶類 cnode movetrail cnode pnode 移動到尾節點 return ptmp void addnode cnode pnode 新增節點 else m nodesu...
c 實現單鏈表
include include using namespace std typedef int datatype struct linknode 建立乙個節點 class slist void swap slist s slist const slist s head null tail null ...
單鏈表(C實現)
ifndef list h define list h typedef struct node node typedef struct list list initlist int insertlist list l,void data,int size node findnodebykey lis...