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

