C++刪除鏈表中間節(jié)點的方法
更新時間:2017年05月09日 14:41:05 作者:難免有錯_
這篇文章主要介紹了C++刪除鏈表中間節(jié)點的方法,結(jié)合實例形式分析了鏈表刪除中間節(jié)點的具體思路與實現(xiàn)技巧,需要的朋友可以參考下
本文實例講述了C++刪除鏈表中間節(jié)點的方法。分享給大家供大家參考,具體如下:
題目:
給定鏈表頭結(jié)點head,實現(xiàn)刪除鏈表的中間節(jié)點函數(shù)。
解題思路及代碼:
快慢指針,快指針走兩步,慢指針一步。
當快指針走到終點時,慢指針正好是鏈表中間節(jié)點,刪除此節(jié)點即可。
鏈表結(jié)構(gòu)定義:
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個節(jié)點 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為中間節(jié)點,pre為中間節(jié)點前一個節(jié)點 pre->next = slow->next; free(slow); slow = NULL; return head; }
希望本文所述對大家C++程序設計有所幫助。
相關文章
c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令
本文主要介紹了c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令, 出現(xiàn)這個錯誤一般都是函數(shù)只找到聲明但沒有實現(xiàn),或者是少了什么鏈接庫,下面就來解決一下2024-06-06C/C++利用棧和隊列實現(xiàn)停車場管理系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)的課程設計一般都不是很好理解,今天小編為大家總結(jié)了一下c和c++版本的常見棧和隊列的的停車場管理程序,需要的小伙伴可以參考一下2022-06-06