C++刪除鏈表中間節(jié)點(diǎn)的方法
本文實(shí)例講述了C++刪除鏈表中間節(jié)點(diǎn)的方法。分享給大家供大家參考,具體如下:
題目:
給定鏈表頭結(jié)點(diǎn)head,實(shí)現(xiàn)刪除鏈表的中間節(jié)點(diǎn)函數(shù)。
解題思路及代碼:
快慢指針,快指針走兩步,慢指針一步。
當(dāng)快指針走到終點(diǎn)時(shí),慢指針正好是鏈表中間節(jié)點(diǎn),刪除此節(jié)點(diǎn)即可。
鏈表結(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個(gè)節(jié)點(diǎn)
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;
}
//此時(shí)fast已到終點(diǎn),slow為中間節(jié)點(diǎn),pre為中間節(jié)點(diǎn)前一個(gè)節(jié)點(diǎn)
pre->next = slow->next;
free(slow);
slow = NULL;
return head;
}
希望本文所述對大家C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
位運(yùn)算實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制
這篇文章主要介紹了位運(yùn)算實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的相關(guān)資料,需要的朋友可以參考下2015-03-03
c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令
本文主要介紹了c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令, 出現(xiàn)這個(gè)錯(cuò)誤一般都是函數(shù)只找到聲明但沒有實(shí)現(xiàn),或者是少了什么鏈接庫,下面就來解決一下2024-06-06
C語言實(shí)現(xiàn)隨機(jī)生成6位數(shù)密碼
這篇文章主要為大家詳細(xì)介紹了如何使用C語言實(shí)現(xiàn)一個(gè)簡單而實(shí)用的隨機(jī)密碼生成器,該生成器將生成包含字母、數(shù)字和特殊字符的隨機(jī)密碼,有需要的小伙伴可以參考下2023-11-11
C/C++ 開發(fā)神器CLion使用入門超詳細(xì)教程
這篇文章主要介紹了C/C++ 開發(fā)神器CLion使用入門超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
C/C++利用棧和隊(duì)列實(shí)現(xiàn)停車場管理系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)一般都不是很好理解,今天小編為大家總結(jié)了一下c和c++版本的常見棧和隊(duì)列的的停車場管理程序,需要的小伙伴可以參考一下2022-06-06

