O 1 刪除鍊錶節點 刪除鍊錶中的重複節點

2021-09-30 20:43:32 字數 626 閱讀 3325

o(1)刪除鍊錶節點:

**實現:

void deletenode(listnode **plist, listnode *ptobedelete)

else //要刪除的點是尾節點

else //鍊錶中有多個節點

}}

刪除鍊錶中的重複節點:

分析: 有n個一樣的節點,則這n個節點全部刪除

**實現:

listnode* deleteduplication(listnode* phead)

//如果p指向鍊錶中第乙個元素,p -> ... -> q ->... , 要刪除p到q, 將指向鍊錶第乙個元素的指標phead指向q->next。

if (p == phead)

else//如果p不指向鍊錶中第乙個元素,pre -> p ->...->q ->... ,要刪除p到q,即pre->next = q->next

//當前處理的p要向鍊錶尾部移動

p = q->next;

} else //p不是重複點

}return phead;

}

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

劍指offer刪除鍊錶節點O(1)演算法

題目描述 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。解題思路 1 常規思路 在單向鍊錶中刪除乙個結點,最常規的做法無疑是從鍊錶的頭結點開始,順序遍歷查詢要刪除的結點,並在鍊錶中刪除該結點。這種思路由於需要順序查詢,時間複雜度自然就是o n 2 正確思路 我們可以很方便...