欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)單鏈表刪除倒數(shù)第k個節(jié)點(diǎn)的方法

 更新時間:2017年05月09日 14:53:42   作者:難免有錯_  
這篇文章主要介紹了C++實(shí)現(xiàn)單鏈表刪除倒數(shù)第k個節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式分析了C++單鏈表的定義、遍歷及刪除相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了C++實(shí)現(xiàn)單鏈表刪除倒數(shù)第k個節(jié)點(diǎn)的方法。分享給大家供大家參考,具體如下:

題目:

刪除單鏈表中倒數(shù)第k個節(jié)點(diǎn)

解題思路及算法代碼:

標(biāo)尺法,定義兩個指針指向鏈表頭結(jié)點(diǎn),先讓一個走k步,然后兩個指針同時開始走,當(dāng)先走的指針走到末尾時,后走的指針指向的結(jié)點(diǎn)就是需要刪除的結(jié)點(diǎn)。

單鏈表結(jié)構(gòu)定義:

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

刪除倒數(shù)第K結(jié)點(diǎn)操作代碼:

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

希望本文所述對大家C++程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解

    C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解

    這篇文章主要介紹了C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解的相關(guān)資料,這里主要說明C++中數(shù)據(jù)結(jié)構(gòu)的遞歸的應(yīng)用,需要的朋友可以參考下
    2017-08-08
  • 使用C++獲取邏輯執(zhí)行毫秒數(shù)的方法

    使用C++獲取邏輯執(zhí)行毫秒數(shù)的方法

    這篇文章主要為大家詳細(xì)介紹了如何使用C++獲取邏輯執(zhí)行毫秒數(shù)的方法,文中借助c++11提供的steady_clock,實(shí)現(xiàn)了精確獲取邏輯執(zhí)行時間的方法,需要的可以參考下
    2024-02-02
  • C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)鏈表去重的實(shí)例

    C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)鏈表去重的實(shí)例

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)鏈表去重的實(shí)例的相關(guān)資料,這里提供了題目及實(shí)例代碼,需要的朋友可以參考下
    2017-07-07
  • VC判斷一個文件為目錄的方法

    VC判斷一個文件為目錄的方法

    這篇文章主要介紹了VC判斷一個文件為目錄的方法,在Windows應(yīng)用程序設(shè)計(jì)中非常具有實(shí)用價值,需要的朋友可以參考下
    2014-10-10
  • C++ std::list的merge()使用方式與分析

    C++ std::list的merge()使用方式與分析

    這篇文章主要介紹了C++ std::list的merge()使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • C語言實(shí)現(xiàn)學(xué)生消費(fèi)管理系統(tǒng)

    C語言實(shí)現(xiàn)學(xué)生消費(fèi)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生消費(fèi)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言版猜數(shù)字小游戲

    C語言版猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言版猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 詳析C++中的auto

    詳析C++中的auto

    這篇文章主要介紹了詳析C++中的auto,auto是具有自動存儲器的局部變量,C++11中,標(biāo)準(zhǔn)委員會賦予了auto全新的含義即:auto不再是一個存儲類型指示符,而作為一個新的類型指示符來指示編譯器,下面來看看文章的詳細(xì)介紹吧
    2022-01-01
  • C語言超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中雙向帶頭循環(huán)鏈表

    C語言超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中雙向帶頭循環(huán)鏈表

    帶頭雙向循環(huán)鏈表:結(jié)構(gòu)最復(fù)雜,一般用在單獨(dú)存儲數(shù)據(jù)。實(shí)際中使用的鏈表數(shù)據(jù)結(jié)構(gòu),都是帶頭雙向循環(huán)鏈表。另外這個結(jié)構(gòu)雖然結(jié)構(gòu)復(fù)雜,但是使用代碼實(shí)現(xiàn)以后會發(fā)現(xiàn)結(jié)構(gòu)會帶來很多優(yōu)勢,實(shí)現(xiàn)反而簡單
    2022-04-04
  • C++操作文件進(jìn)行讀取、刪除、修改指定行

    C++操作文件進(jìn)行讀取、刪除、修改指定行

    今天小編就為大家分享一篇關(guān)于C++操作文件進(jìn)行讀取、刪除、修改指定行,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論