最近溫習鍊錶的知識,看到《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...