中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

西安響應(yīng)式網(wǎng)站建設(shè)服務(wù)提供商身邊的網(wǎng)絡(luò)營銷案例

西安響應(yīng)式網(wǎng)站建設(shè)服務(wù)提供商,身邊的網(wǎng)絡(luò)營銷案例,網(wǎng)站開發(fā)需要的技術(shù)人員有什么軟件,小豹子韜韜是哪個(gè)網(wǎng)站做的全文目錄引言鏈表的中間結(jié)點(diǎn)題目描述與思路實(shí)現(xiàn)鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn)題目描述與思路實(shí)現(xiàn)總結(jié)引言 在上一篇文章中,介紹了反轉(zhuǎn)鏈表 我們利用了鏈表是邏輯連續(xù)的特點(diǎn),逆置了鏈表的邏輯連接順序,從而實(shí)現(xiàn)反轉(zhuǎn)鏈表: 戳我查看反轉(zhuǎn)鏈表詳…

全文目錄

  • 引言
  • 鏈表的中間結(jié)點(diǎn)
    • 題目描述與思路
    • 實(shí)現(xiàn)
  • 鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn)
    • 題目描述與思路
    • 實(shí)現(xiàn)
  • 總結(jié)

引言

在上一篇文章中,介紹了反轉(zhuǎn)鏈表
我們利用了鏈表是邏輯連續(xù)的特點(diǎn),逆置了鏈表的邏輯連接順序,從而實(shí)現(xiàn)反轉(zhuǎn)鏈表:
戳我查看反轉(zhuǎn)鏈表詳解哦

在本篇文章中,我們將介紹找鏈表的中間結(jié)點(diǎn)與鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn):
(由于這兩道題目的思路比較簡單,就放在一起介紹)
鏈表的中間結(jié)點(diǎn)OJ鏈接
鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn)OJ鏈接

鏈表的中間結(jié)點(diǎn)

題目描述與思路

在這里插入圖片描述
這道題要求我們找到鏈表的中間結(jié)點(diǎn)并返回這個(gè)中間結(jié)點(diǎn)。
若鏈表有奇數(shù)個(gè)結(jié)點(diǎn),返回中間結(jié)點(diǎn)地址;若鏈表有偶數(shù)個(gè)結(jié)點(diǎn),這個(gè)鏈表就有兩個(gè)中間結(jié)點(diǎn),返回后一個(gè)。即如果單鏈表有5個(gè)結(jié)點(diǎn),返回第3個(gè)結(jié)點(diǎn)的地址;若單鏈表有6個(gè)節(jié)點(diǎn),返回后一個(gè)中間結(jié)點(diǎn),即第4個(gè)結(jié)點(diǎn)。
函數(shù)的參數(shù)為鏈表第一個(gè)結(jié)點(diǎn)的地址。結(jié)構(gòu)體變量與主函數(shù)部分已經(jīng)定義,我們只需要實(shí)現(xiàn)接口即可。

對(duì)于這道題目,我們當(dāng)然可以先遍歷鏈表,計(jì)算出鏈表的長度,再運(yùn)算出中間結(jié)點(diǎn)是第幾個(gè)。然后再遍歷到該位置并返回即可。
但是這樣的算法顯得有些麻煩,有沒有一種算法可以實(shí)現(xiàn)只遍歷一遍就找到中間結(jié)點(diǎn)呢?

當(dāng)然是可以的:
我們可以采用快慢指針的方法來實(shí)現(xiàn):快指針一次向前移動(dòng)兩個(gè)結(jié)點(diǎn);慢指針一次向前移動(dòng)一個(gè)結(jié)點(diǎn)。當(dāng)快指針到鏈表末尾時(shí),慢指針的位置就是單鏈表的中間結(jié)點(diǎn):

實(shí)現(xiàn)

為了使代碼更簡潔,我們可以對(duì)結(jié)構(gòu)體名稱重命名:

typedef struct ListNode ListNode;

要實(shí)現(xiàn)這個(gè)算法,我們首先需要兩個(gè)指針變量fast與slow,將它們都初始化為單鏈表頭結(jié)點(diǎn)的地址:

ListNode* fast = head;
ListNode* slow = head;

然后while循環(huán),每次循環(huán)中slow向后移動(dòng)一個(gè)結(jié)點(diǎn);fast向后移動(dòng)兩個(gè)結(jié)點(diǎn)。

當(dāng)fast->next為NULL時(shí),即fast已經(jīng)不能實(shí)現(xiàn)向后移動(dòng)兩個(gè)結(jié)點(diǎn)了,所以此時(shí)跳出循環(huán)。并且,當(dāng)fast后面兩個(gè)結(jié)點(diǎn)均不為NULL時(shí),才進(jìn)行向后移動(dòng)的操作,否則跳出循環(huán)。每次循環(huán),先執(zhí)行slow指針向后移動(dòng)一個(gè)結(jié)點(diǎn),這樣可以使鏈表長度為偶數(shù)時(shí),slow指向中間結(jié)點(diǎn)的后一個(gè):
在這里插入圖片描述
在這里插入圖片描述

typedef struct ListNode ListNode;struct ListNode* middleNode(struct ListNode* head) 
{ListNode* fast = head;ListNode* slow = head;while (fast->next){slow = slow->next;if (fast->next->next){fast = fast->next->next;}else{break;}}return slow;
}

鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn)

題目描述與思路

在這里插入圖片描述
這道題要求我們找到單鏈表中的倒數(shù)第k個(gè)結(jié)點(diǎn)。

我們當(dāng)然可以遍歷整鏈表,計(jì)算鏈表的長度。計(jì)算出鏈表的倒數(shù)第k個(gè)元素的位置后,再遍歷找到,并返回。
但是這樣的算法顯得有些麻煩,我們可以嘗試在只遍歷一遍的情況下實(shí)現(xiàn):

我們可以使用雙指針的方法,先讓快指針向后移動(dòng)k個(gè)結(jié)點(diǎn)。然后兩個(gè)指針一起向后移動(dòng),當(dāng)快指針t指向最后一個(gè)結(jié)點(diǎn)時(shí),慢指針就指向鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn)。

實(shí)現(xiàn)

為了使代碼更簡潔,我們可以對(duì)結(jié)構(gòu)體名稱重命名:

typedef struct ListNode ListNode;

要實(shí)現(xiàn)這個(gè)算法,我們首先需要兩個(gè)指針變量fast與slow,將它們都初始化為單鏈表頭結(jié)點(diǎn)的地址:

ListNode* fast = pListHead;
ListNode* slow = pListHead;

首先判斷k是否為0與鏈表是否為空,如果是,則直接返回NULL;

然后將fast指針向后移動(dòng)k-1個(gè)結(jié)點(diǎn),若fast在向后移動(dòng)時(shí),fast為NULL說明鏈表的長度小于k-1,此時(shí)返回NULL。我們可以通過在循環(huán)之后對(duì)fast指針進(jìn)行判斷,從而得知循環(huán)是否因鏈表長度不足而結(jié)束。

如果不是,則進(jìn)入循環(huán),slow指針與fast指針同時(shí)向前移動(dòng),當(dāng)fast指針指向鏈表的最后一個(gè)結(jié)點(diǎn)時(shí),slow指向的就是倒數(shù)第k個(gè)元素,返回slow即可。
需要注意的是,此時(shí)要求fast指針在鏈表最后一個(gè)結(jié)點(diǎn)時(shí)停下,所以while的判斷雕件為fast->nex,而不是fast:
在這里插入圖片描述

typedef struct ListNode ListNode;struct ListNode* FindKthToTail(struct ListNode* pListHead, int k)
{ListNode* fast = pListHead;ListNode* slow = pListHead;if (k == 0 || pListHead == NULL){return NULL;}while (--k != 0 && fast != NULL)//--k為條件時(shí),循環(huán)k-1次{fast = fast->next;}if (fast == NULL){return NULL;}else{while (fast->next){slow = slow->next;fast = fast->next;}}return slow;
}

總結(jié)

當(dāng)然,這只是其中一種方法,相信還有別的思路。歡迎大家在評(píng)論區(qū)討論

還有幾道關(guān)于單鏈表的題目講解,歡迎持續(xù)關(guān)注哦

如果大家認(rèn)為我對(duì)某一部分沒有介紹清楚或者某一部分出了問題,歡迎大家在評(píng)論區(qū)提出

如果本文對(duì)你有幫助,希望一鍵三連哦

希望與大家共同進(jìn)步哦

http://www.risenshineclean.com/news/60303.html

相關(guān)文章:

  • 自己做網(wǎng)站視頻教學(xué)無錫今日頭條新聞
  • 有專門做網(wǎng)站的公司嗎鄭州關(guān)鍵詞網(wǎng)站優(yōu)化排名
  • 中國建設(shè)銀行財(cái)付通網(wǎng)站鄭州seo顧問熱狗hotdoger
  • 龍海網(wǎng)站建設(shè)哪家好關(guān)鍵詞拓展工具有哪些
  • 宣傳片拍攝制作報(bào)價(jià)明細(xì)百度關(guān)鍵詞seo外包
  • 東莞求職招聘信息網(wǎng)鎮(zhèn)江網(wǎng)站seo
  • wordpress 火車頭南寧百度seo優(yōu)化
  • 國外網(wǎng)站推廣公司如何廣告推廣
  • 網(wǎng)站建設(shè)初期世界羽聯(lián)最新排名
  • wps哪個(gè)工具做網(wǎng)站網(wǎng)店推廣實(shí)訓(xùn)報(bào)告
  • 教師企業(yè)頂崗日記網(wǎng)站開發(fā)長沙網(wǎng)站優(yōu)化方案
  • 丹陽做網(wǎng)站網(wǎng)頁設(shè)計(jì)與制作個(gè)人網(wǎng)站模板
  • 營銷型網(wǎng)站知識(shí)市場(chǎng)營銷策劃ppt
  • 電商平面設(shè)計(jì)前景如何seo排名點(diǎn)擊器原理
  • 網(wǎng)站開發(fā)軟硬件配置外國網(wǎng)站開放的瀏覽器
  • AWS免費(fèi)套餐做網(wǎng)站可以嗎網(wǎng)絡(luò)營銷概念是什么
  • 專業(yè)足球網(wǎng)站建設(shè)優(yōu)化seo教程技術(shù)
  • 韓國大型門戶網(wǎng)站廣州最新重大新聞
  • 用v9做的網(wǎng)站上傳服務(wù)器杭州seo整站優(yōu)化
  • 做酒店網(wǎng)站營銷策劃公司主要做些什么
  • 全國送花網(wǎng)站北京出大大事了
  • opencms做網(wǎng)站 誰百度競價(jià)是什么意思
  • 有了域名搭建網(wǎng)站詳細(xì)步驟搜索引擎seo優(yōu)化平臺(tái)
  • 網(wǎng)絡(luò)服務(wù)器租賃費(fèi)一般多少錢seo怎么做
  • 建立自己的網(wǎng)站步驟深圳公司網(wǎng)絡(luò)推廣該怎么做
  • 使用dw做門戶網(wǎng)站今天國際新聞
  • 品牌網(wǎng)站策劃書互聯(lián)網(wǎng)媒體廣告公司
  • 畢業(yè)論文網(wǎng)站鹽城seo優(yōu)化
  • 注冊(cè)網(wǎng)站入口西安百度關(guān)鍵詞優(yōu)化
  • 做淘客網(wǎng)站 備案煙臺(tái)seo快速排名