69 在O 1 時間刪除鍊錶節點

2021-10-01 15:51:59 字數 1110 閱讀 6968

對於刪除鍊錶節點需要考慮的問題

鍊錶為空時?

刪除頭節點時?

刪除尾節點時?

要在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 ...