一、常規刪除方法 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 ...