国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++刪除鏈表中間節點的方法

2020-01-26 14:09:51
字體:
來源:轉載
供稿:網友

本文實例講述了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;}

希望本文所述對大家C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景东| 义马市| 白山市| 冕宁县| 鄂托克前旗| 且末县| 岚皋县| 宁明县| 襄汾县| 常宁市| 西贡区| 滦南县| 兴城市| 依兰县| 庆元县| 龙岩市| 抚顺市| 阜康市| 安龙县| 长沙县| 大洼县| 常宁市| 洪洞县| 华安县| 甘肃省| 吉林省| 璧山县| 蒙山县| 长岛县| 岗巴县| 沿河| 舟山市| 苍溪县| 昭通市| 博野县| 双城市| 长乐市| 乌拉特前旗| 台江县| 乌鲁木齐市| 德保县|