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

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

C++實現單鏈表刪除倒數第k個節點的方法

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

本文實例講述了C++實現單鏈表刪除倒數第k個節點的方法。分享給大家供大家參考,具體如下:

題目:

刪除單鏈表中倒數第k個節點

解題思路及算法代碼:

標尺法,定義兩個指針指向鏈表頭結點,先讓一個走k步,然后兩個指針同時開始走,當先走的指針走到末尾時,后走的指針指向的結點就是需要刪除的結點。

單鏈表結構定義:

typedef struct Node{  int data;  struct Node* next;}node, *pLinkedList;

刪除倒數第K結點操作代碼:

//head表示頭結點Node* removeLastKthNode(pLinkedList head, int k){  if (NULL == head->next || k < 1)    return head;  pLinkedList cur = head; //1號指針  pLinkedList ret = head; //2號指針,指向待刪除節點  pLinkedList pre = NULL; //pdel待刪除節點的前一個節點  /*  head  1  2  3  4  5  cur  ret  */  while (k > 0 && cur != NULL)  {    k--;    cur = cur->next;  }  //當鏈表走到終點時,k仍然大于0,可知k值大于鏈表長度  if (k > 0 && cur == NULL)  {    cout << "k值大于鏈表長度" << endl;    return head;  }  //k == 0時,1號指針和2號指針同時走,ret即為待刪除的節點  if (k == 0)  {    while (cur != NULL)    {      pre = ret;      cur = cur->next;      ret = ret->next;    }    /*k = 2時    head  1    2   3    4   5  NULL               pre   ret     cur    即要求刪除ret節點    */    pre->next = ret->next;    free(ret);    ret = NULL;    return head;  }}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图木舒克市| 普兰店市| 林口县| 德江县| 千阳县| 靖西县| 灌云县| 西充县| 嘉善县| 鞍山市| 洪泽县| 新郑市| 天峨县| 鄯善县| 丽水市| 厦门市| 荣昌县| 云南省| 加查县| 广元市| 广宁县| 炎陵县| 五莲县| 确山县| 宿松县| 库伦旗| 应用必备| 乐昌市| 井冈山市| 湟中县| 平度市| 永胜县| 六枝特区| 石家庄市| 渝中区| 崇左市| 龙泉市| 青川县| 华阴市| 新化县| 房产|