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 正確思路 我們可以很方便...