o 1 時間刪除鍊錶指定結點

2021-07-14 12:48:11 字數 502 閱讀 7957

一、常規刪除方法 o(n)

演算法:

1、不需改變鍊錶結構

2、從頭開始遍歷結點,找到待刪除結點的前乙個結點。

二、o(1)

演算法:

1、改變鍊錶結構,並且不能是尾節點。給定要刪除節點的位址。

2、不一定非得要找到被刪除結點的前乙個結點,可以很方便的找到待刪除結點的下乙個結點,將下一節點內容複製到待刪除結點,刪除下一節點即可。

3、如果是根據內容刪除結點,則不能使用。

struct listnode 

};void deletenode(listnode* head,listnode* nodetodelete)

//刪除結點是尾節點且也是頭結點

else

if(head == nodetodelete)

//是尾節點不是頭結點

else

}

兩種方法都需要注意:如果刪除的是尾節點,需要指向null

O 1 時間刪除鍊錶結點

題目 給定鍊錶的頭指標和乙個結點指標,在 o 1 時間刪除該結點。鍊錶結點的定義如下 struct listnode 函式的宣告如下 void deletenode listnode plisthead listnode ptobedeleted 分析 這是一道廣為流傳的 google 面試題,能有...

O 1 時間刪除鍊錶結點

題目 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。鍊錶結點與函式的定義如下 typedef struct listnode node,pnode void delete node pnode plisthead,pnode ptodeleted 一般來說,我們拿到乙個刪...

在O 1 時間刪除鍊錶結點

題目 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。鍊錶結點與函式的定義如下 struct listnode void deletenode listnode plisthead,listnode ptobedeleted 刪除結點的操作我們經常碰到,比如乙個鍊錶a b ...