1. 程式人生 > >從無頭單鏈表中刪除節點

從無頭單鏈表中刪除節點

刪除無頭單鏈表:

程式實現很簡單,主要是思路如果打不開的話,就無從下手。


如果是帶有頭節點的連結串列,直接從頭部遍歷,找到需要刪除的節點,然後直接刪除

刪除的方式,加入目前的節點為node ,前一個節點即為pre

pre->next = node->next;

delete node;

node = null;

但是目前沒有頭節點,所以沒有其他方式找到node的前驅節點。

按照目前的思路想:

目前知道當前的節點,刪除後繼節點是最容易和最有效的方式。達到我們想要的目的了嗎?或者說我們想要實現什麼?

我們想要實現的是資料的轉移,並不是完整的節點,有了這樣的考量,我就只要保留資料即可


void DeleteRandomNode(node* pCurrent)

{

Assert(pCurrent != NULL);

node* pNext = pCurrent->next;

if(pNext != NULL)

{

pCurrent->next = pNext->next;

pCurrent->data = pNext->data;

delete pNext;

}

}