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;

}

今天的分享就到這里了,有什么問題的地方歡迎大家指出。


 

最后,如果你也想成為程序員,想要快速掌握編程,趕緊加入學習企鵝圈子

里面有資深專業軟件開發工程師,在線解答你的所有疑惑~編程語言入門“so easy”

編程學習書籍:


 

編程學習視頻:


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM