国产探花免费观看_亚洲丰满少妇自慰呻吟_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++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新绛县| 六枝特区| 沂南县| 苍南县| 中西区| 池州市| 吉木乃县| 巴青县| 星子县| 巴青县| 读书| 灵川县| 贺州市| 东乡族自治县| 阿拉善盟| 延川县| 大厂| 阿拉善左旗| 韩城市| 吴旗县| 石台县| 观塘区| 诸城市| 克什克腾旗| 冀州市| 梁平县| 扶绥县| 江源县| 开远市| 西畴县| 淅川县| 右玉县| 蓬莱市| 冷水江市| 宿州市| 仪征市| 大关县| 鞍山市| 衡阳县| 礼泉县| 额敏县|