運用雙指標查詢鍊錶第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開始計數,...