對於刪除鍊錶節點需要考慮的問題
鍊錶為空時?
刪除頭節點時?
刪除尾節點時?
要在o(1)
o(1)
的時間複雜度內刪除節點,那只能採用特殊辦法了
對於頭節點,很容易完成,因為它沒有前驅
對於中間節點,只能是把待刪除節點改造成其後繼節點,然後刪除後繼節點了,這樣值是相等的,但是確實不是同乙個節點
對於尾節點,可能就需要從頭遍歷了
/**
* @classname solution
* @description todo
* @date 2019/12/23 8:21
* @author cheng
*/public
class
solution
nodes.
add(node);}
listnode head = nodes.
get(0)
; listnode node = nodes.
get(9)
; head =
deletenode
(head,node)
;showlinkedlist
(head);}
public
static
void
showlinkedlist
(listnode head)
system.out.
println
(ret.
tostring()
);}public
static listnode deletenode
(listnode head, listnode node)
// 刪除尾節點
else
if(node.next == null)
listnode next = node.next;
node.next = null;
cur.next = next;
}// 正常刪除節點
else
return head;
}}
O(1)時間刪除鍊錶節點
問題描述 給定單相鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 時間刪除該節點。這個比較簡單,做不做解釋,直接看參考 不過有一點就是要注意,還是要看刪除的節點型別,不能保證總是o 1 時間 void deletenode listnode phead,listnode ptobedelete 刪...
o 1 時間刪除鍊錶的節點
題目 給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 時間內刪除該節點。include include list.h using namespace std void deletenode listnode phead,listnode pnode else if phead pnode ...
在O 1 時間刪除鍊錶結點
題目 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。鍊錶結點與函式的定義如下 struct listnode void deletenode listnode plisthead,listnode ptobedeleted 刪除結點的操作我們經常碰到,比如乙個鍊錶a b ...