劍指Offer之 在O 1 時間刪除鍊錶結點

2021-07-02 05:50:36 字數 865 閱讀 5235

給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o(1)時間刪除該結點。

3種情況:1、只有乙個結點,且要刪除的就是第乙個結點???遇到鍊錶時一定要單獨考慮只有乙個結點的情況

2、要刪除的結點不是最後乙個結點,這時不需要查詢,直接用後面乙個結點的值代替前面乙個結點,然後刪除後乙個結點

3、要刪除的結點是最後乙個結點,這時需要先遍歷到倒數第二個結點

#includeusing namespace std;

//功能:o(1)時間內刪除鍊錶中的某個結點

//3種情況:1、只有乙個結點,且要刪除的就是第乙個結點???遇到鍊錶時一定要單獨考慮只有乙個結點的情況

// 2、要刪除的結點不是最後乙個結點,這時不需要查詢,直接用後面乙個結點的值代替前面乙個結點,然後刪除後乙個結點

// 3、要刪除的結點是最後乙個結點,這時需要先遍歷到倒數第二個結點

struct listnode

listnode(int x):m_nvalue(x),m_pnext(null){}

};void deletenode(listnode *plisthead , listnode *ptobedeleted)

if(plisthead == ptobedeleted) //第一種情況

listnode *pre = plisthead;

while(pre->m_pnext != ptobedeleted) //第三種情況

pre->m_pnext = ptobedeleted->m_pnext;

delete ptobedeleted;

ptobedeleted = null;

}int main()

}

劍指offer 在O 1 時間刪除鍊錶結點

題目 給定單向鍊錶的頭指標和乙個指標,定義乙個函式在o 1 時間刪除該結點 class node public string getvalue public void setvalue string value public node getnext public void setnext node...

劍指offer 在O(1)時間刪除鍊錶節點

題目描述 給定單鏈表的頭結點和待刪除結點,在o 1 時間刪除鍊錶節點 class listnode 常規方法從煉表頭結點沿著鍊錶找到待刪除結點完成刪除操作。時間複雜度o n 可以將待刪除結點的下一結點內容複製到待刪除結點上,將待刪除結點的下一結點指向待刪除結點的的下一結點的下一結點。時間複雜度o 1...

劍指offer13 在O 1 時間刪除鍊錶結點

題目 在給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間內刪除該節點。鍊錶的結點定義如下 struct listnode 要分析幾種情況 1.空鍊錶 2.只有乙個結點 3.刪除的結點是尾結點 void deletenode listnode pnode,listnode pdelete...