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; }
希望本文所述對(duì)大家C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
C語(yǔ)言練習(xí)題:自由落體的小球簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇C語(yǔ)言練習(xí)題:自由落體的小球簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-05-05位運(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-03c++調(diào)用動(dòng)態(tài)庫(kù)LNK2019和LNK1120無(wú)法解析的外部命令
本文主要介紹了c++調(diào)用動(dòng)態(tài)庫(kù)LNK2019和LNK1120無(wú)法解析的外部命令, 出現(xiàn)這個(gè)錯(cuò)誤一般都是函數(shù)只找到聲明但沒(méi)有實(shí)現(xiàn),或者是少了什么鏈接庫(kù),下面就來(lái)解決一下2024-06-06C語(yǔ)言實(shí)現(xiàn)隨機(jī)生成6位數(shù)密碼
這篇文章主要為大家詳細(xì)介紹了如何使用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單而實(shí)用的隨機(jī)密碼生成器,該生成器將生成包含字母、數(shù)字和特殊字符的隨機(jī)密碼,有需要的小伙伴可以參考下2023-11-11C/C++ 開(kāi)發(fā)神器CLion使用入門(mén)超詳細(xì)教程
這篇文章主要介紹了C/C++ 開(kāi)發(fā)神器CLion使用入門(mén)超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04C/C++利用棧和隊(duì)列實(shí)現(xiàn)停車(chē)場(chǎng)管理系統(tǒng)
數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)一般都不是很好理解,今天小編為大家總結(jié)了一下c和c++版本的常見(jiàn)棧和隊(duì)列的的停車(chē)場(chǎng)管理程序,需要的小伙伴可以參考一下2022-06-06