c 實現單鏈表

2021-10-24 09:03:35 字數 4038 閱讀 9843

增根據節點內某屬性來按照特定順序的新增刪改

查完整**

補充單鏈表是一種有序的列表

以節點的方式來進行儲存(鏈式儲存)

每個節點包含 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...