運用雙指標查詢鍊錶倒數第K個節點

2021-10-25 04:17:27 字數 975 閱讀 1888

運用雙指標查詢鍊錶第k個節點

雙指標演算法顧名思義就是運用兩個指標搭配進行運算,此次的內容主要介紹的是解決鍊錶問題常用到的快慢指標。

核心思想:先初始化兩個指標且指向鍊錶的頭結點,然後讓快指標先走k步,之後快慢指標同時前進。這樣執行後,當快指標走到鍊錶的末尾null時,慢指標正好指向倒數第k個節點。

下面是雙指標的**:

int

search_k

(linklist *h,

int k)

if(count < k)

//如果k大於鍊錶的長度情況

else

}

接下來就是整體的**:

#include

#include

typedef

struct linknode

linklist;

linklist *

creat_linklist()

;//尾插法建立含有頭結點的單鏈表

intsearch_k

(linklist *h,

int k)

;//雙指標演算法查詢節點

intmain()

linklist *

creat_linklist()

q->next =

null

;return h;

}int

search_k

(linklist *h,

int k)

if(count < k)

//如果k大於鍊錶的長度情況

else

}

執行結果示例:

鍊錶的倒數第K個結點 雙指標

找到單鏈表中倒數第k個結點。解題思路是雙指標,第乙個指標從頭向尾部一定k 1位,然後這時候第二個指標再從頭部開始移動,當第乙個指標移動到尾部的時候,第二個指標指的位置就是倒數第k個。這裡需要考慮一些特殊情況,比如頭結點為空 k 0 k 鍊錶中的結點數。還需要注意一點的就是倒數第k個,k是從1開始的。...

LeeteCode 查詢鍊錶中倒數第k個節點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點。鍊錶節點的定義 definition for singly linked list.public class ...

雙指標法 鍊錶中倒數第k個結點

這部分開始,書上講的是關於程式設計時魯棒性 robust 的問題,提高robust的有效途徑就是進行防禦性程式設計,在程式設計時就把所有可能出現的操作和誤操作都考慮進去,做合適的處理。面試題22 鍊錶中倒數第k個結點輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,...