C++刪除鏈表中間節點的方法。本站提示廣大學習愛好者:(C++刪除鏈表中間節點的方法)文章只能為提供參考,不一定能成為您想要的結果。以下是C++刪除鏈表中間節點的方法正文
作者:難免有錯_
這篇文章主要介紹了C++刪除鏈表中間節點的方法,結合實例形式分析了鏈表刪除中間節點的具體思路與實現技巧,需要的朋友可以參考下本文實例講述了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為中間節點前一個節點 pre->next = slow->next; free(slow); slow = NULL; return head; }
希望本文所述對大家C++程序設計有所幫助。