刪除鍊錶的節點,關於delete和free

2021-07-10 04:52:12 字數 560 閱讀 6562

最近溫習鍊錶的知識,看到《c++入門經典》,第九版,p528。

這裡面講解了鍊錶的刪除節點。

delete nodetodelete;

用這樣一句話就刪除節點了,十分方便。

不過,我還是有些疑問,這是不是太簡單了。然後就查詢了一下,果然有學習到了乙個知識點,我已經會的,忘記了,這次又學一遍,應該不會忘記了。

關於delete和free的區別,

**1. delete 用於釋放 new 分配的空間,free 有用釋放 malloc 分配的空間

2. delete 用於釋放 new 分配的空間

3. delete 釋放空間的時候會呼叫 相應物件的析構函式

順便說一下new在分配空間的時候同時會呼叫物件的建構函式,對物件進行初始化,使用malloc則只是分配記憶體

4. 呼叫free 之前需要檢查 需要釋放的指標是否為空,使用delete 釋放記憶體則不需要檢查指標是否為null

5. free 和 delete 不能混用,也就是說new 分配的記憶體空間最好不要使用使用free 來釋放,malloc 分配的空間也不要使用 delete來釋放

鍊錶 刪除鍊錶的節點

劍指offer的乙個題,題目是要求在最少的時間內刪除鍊錶的節點。問題分析 對於鍊錶的刪除,按照劍指offer的一貫思路就是展開討論 1 空鍊錶咋辦 待刪除的節點是空節點咋辦 2 要刪除的節點在鍊錶中的位置有三種情況 1 鍊錶只有乙個節點,待刪除節點是表頭又是尾節點 2 鍊錶有多個節點,待刪除的節點是...

刪除鍊錶節點

問題描述 給出單鏈表頭指標以及要刪除節點的位址,要求寫 刪除這個節點,並且時間複雜度為o 1 如何實現?分析 1 應變能力 2 對時間複雜度的理解 平常思路 prev next temp next free temp 但是該思路的時間複雜度為o n 解題 不能從phead開始找,入口在所要刪除的節點...

鍊錶刪除節點

define crt secure no warnings include include typedef struct linknode lk,lk 有頭鍊錶的初始化 lk initlinknode 初始化頭結點 headnode num 1 頭結點不維護資料域,這行 可寫可不寫 headnode...