這篇文章主要介紹了c++刪除鍊錶中間節點的方法,結合例項形式分析了鍊錶刪除中間節點的具體思路與實現技巧,希望在學習上有幫助到大家。
題目:給定煉表頭結點head,實現刪除鍊錶的中間節點函式。
解題思路及**:
快慢指標,快指標走兩步,慢指標一步。
當快指標走到終點時,慢指標正好是鍊錶中間節點,刪除此節點即可。
鍊錶結構定義:
typedef struct node演算法c++**:int data;
struct node* next;
}node, *plinkedlist;
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 ...