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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁波市| 湖北省| 通山县| 桓台县| 商城县| 达州市| 玛沁县| 安龙县| 巩义市| 瑞丽市| 板桥市| 宣恩县| 观塘区| 腾冲县| 石嘴山市| 襄汾县| 蓬莱市| 清水河县| 会泽县| 东平县| 张北县| 隆昌县| 论坛| 新蔡县| 吴旗县| 九台市| 松溪县| 临朐县| 桦南县| 焦作市| 乐陵市| 鄂尔多斯市| 承德市| 刚察县| 巨野县| 白玉县| 呼伦贝尔市| 永善县| 重庆市| 安泽县| 抚松县|