C 丨刪除鍊錶中間節點的方法詳解

2022-06-05 08:06:07 字數 1402 閱讀 7762

這篇文章主要介紹了c++刪除鍊錶中間節點的方法,結合例項形式分析了鍊錶刪除中間節點的具體思路與實現技巧,希望在學習上有幫助到大家。

題目:給定煉表頭結點head,實現刪除鍊錶的中間節點函式。

解題思路及**:

快慢指標,快指標走兩步,慢指標一步。 

當快指標走到終點時,慢指標正好是鍊錶中間節點,刪除此節點即可。

鍊錶結構定義:

typedef struct node

int data;

struct node* next;

}node, *plinkedlist;

演算法c++**:
node* removemidnode(plinkedlist head)

if (head->next == null || head == null)

return head;

if (head->next->next == null)

return head->next;

plinkedlist fast = head;

plinkedlist slow = head;

plinkedlist pre = null;

head  1    2    3    4    5

pre  slow  fast

//1個節點

if (head->next->next == null)

return head->next;

while (fast->next != null && fast->next->next != null)

pre = slow;

fast = fast->next->next;

slow = slow->next;

//此時fast已到終點,slow為中間節點,pre為中間節點前乙個節點

最後,如果你也想成為程式設計師,想要快速掌握程式設計,趕緊加入學習企鵝圈子

程式設計學習書籍:

刪除鍊錶的中間節點和a b處節點

說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 刪除鍊錶的中間節點和a b處節點 中的一道題目。在此感謝左程雲老師。題目 給定鍊錶的頭節點 head,實現刪除鍊錶的中間節點的函式。例如 步刪除任何節點 1 2,刪除節點1 1 2 3,刪除節點2 1 2 3 4,刪除節點2 1 2 3 ...

鍊錶的中間節點

給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode 型別的...

鍊錶的中間節點

題目 給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。示例 1 輸入 1,2,3,4,5 輸出 此列表中的結點 3 序列化形式 3,4,5 返回的結點值為 3 測評系統對該結點序列化表述是 3,4,5 注意,我們返回了乙個 listnode ...