如何刪除鏈表節點

 題目是這樣的:

一個單向鏈表,不知道頭節點,一個指針指向其中的一個節點,問如何刪除這個指針指向的節點?

有關鏈表的面試題在技術面試中是很常見的。因爲鏈表在數據結構中是很基本的結構,另外,鏈表經常會使沒有紮實掌握的人陷入誤區。

就以這道題爲例,沒有一定的基礎,感覺無從下手。但如果理解了鏈表在內存中的存儲方式,找到解決辦法也是不難的。

解決方案:將這個指針指向的next節點值copy到本節點,將next指向next->next,並隨後刪除原next指向的節點。

以下是源代碼實現:

class node
{
public:
    node(
int x) : data(x), next(0){}
    
int data;
    node
* next;
}
;

void DelNode(node* pDel)
{
    node
* pTemp = pDel->next;
    memcpy(pDel, pTemp, 
sizeof(node));
    pDel
->next = pTemp->next;
    delete pTemp;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章