求單鏈表中倒數第k個結點
{
if (k <= 0)
return NULL;
LinkedListNode p1 = head;
LinkedListNode p2 = head;
//P2向前移動k個結點
for (int i = 0; i < k - 1; i++)
{
if (p2 == NULL)
return NULL;
p2 = p2->next;
}
if (p2 == NULL)
return NULL;
/*現在以同樣的速度移動p1和p2,當p2抵達連結串列末尾時,p1剛好指向倒數第k個結點*/
while (p2->next != NULL)
{
p1 = p1->next;
p2 = p2->next;
}
return p1;
}
相關推薦
求單鏈表中倒數第k個結點
LinkedListNode nthToLast(LinkedListNode head, int k) {if (k <= 0)return NULL;LinkedListNode p1 = head;LinkedListNode p2 = head;//P2向前移動k個結點for (int i =
輸出單鏈表中倒數第k個結點(Java版)
題目:輸入帶頭結點的單鏈表L,輸出該單鏈表中倒數第k個結點。單鏈表的倒數第0個結點為該單鏈表的尾指標。要求只能遍歷一次單鏈表。 解題思路: 如果不要求只能遍歷一次單鏈表,我們可以先遍歷一次單鏈表
【Java】實現一個演算法,找出一個單鏈表中倒數第K個結點
用迭代法,使用兩個指標P1和P2,分別指向連結串列中相聚K個結點的兩個結點。 P1,p2均指向頭加點,然後將P2向前移動K個結點。之後,以相同的速度移動這兩個指標,那麼p2會在length-K步後到達尾結點,這時p1就剛好在第length-K個結點也就是倒數第K個結點的位置
求未知長度單鏈表中倒數第k個節點
問題如下:單鏈表,不知道長度,如何得到它的倒數第k個節點。 方法是:先從第一個結點S開始,走到k個節點到D,再同時移動S和D,直到D到尾巴D`,那麼此時的S就是倒數第k個節點 class LinkedList { private LinkNode
連結串列--如何查詢單鏈表中倒數第k個元素
如何查詢單鏈表中倒數第k個元素 思路:因為是單鏈表,只能從頭至尾遍歷。可以設定兩個引用,其中一個引用比另外一個先前移k-1步,然後兩個引用同時開始移動,當先前移的那個引用到達連結串列尾的時候,即指向為
連結串列---找出單鏈表中倒數第k個節點
思路: 1、迭代,二指標,快的先走n步,然後一起走,當fast走到最後,slow就是結果 2、遞迴,到達連結串列末尾返回一個0計數器,當計數器等於k時就是第k個 迭代 ListNode nthToLast(ListNode head, int n) {
劍指Offer面試題15(Java版):鏈表中倒數第K個結點
head 計數器 easy sta 相同 ret white style 輸出 題目: 輸入一個鏈表。輸出該鏈表中倒數第k哥結點。 為了符合大多數人的習慣,本題從1開始計數。即鏈表的尾結點是倒數第1個結點。 比如一個鏈表有6個結點。從頭結點開始它們的值依次是1。2。
《劍指Offer》題目:鏈表中倒數第k個結點
倒數 -- 輸出 col ota pan code 輸入 tno 題目描述:輸入一個鏈表,輸出該鏈表中倒數第k個結點 題目分析:因為不能直接從鏈表的尾部遍歷,所以要分兩步走: 第一步:從鏈表的頭部開始遍歷,直至鏈表的尾部,統計出鏈表結點的個數 第二步:根據鏈表結點的個數,計
劍指Offer-鏈表中倒數第k個結點
== fin isp 長度 bre turn k個結點 nod ota 題目: 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 思路1: 使用指針遍歷鏈表,得到鏈表的長度len; 將指針指向鏈表頭部,向後移動len-k+1個長度,得到倒數第k個節點。 代碼1:
劍指offer編程-鏈表中倒數第k個結點
描述 節點 thead 註意 功能測試 判斷 tro return 測試用例 題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 思路: 1.遍歷鏈表得到鏈表的長度l,找到從前往後的第l-k+1個節點。需要遍歷兩遍。 2.遍歷一次即可的方法:兩個指針,第一個指針從頭向尾
劍指offer十四之鏈表中倒數第k個結點
gif img https question pla last 代碼 鏈表 || 一、題目 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 二、思路 兩個指針,先讓第一個指針和第二個指針都指向頭結點,然後再讓第一個指正走(k-1)步,到達第k個節點。然後兩個指針同
劍指Offer 鏈表中倒數第k個結點
n-k ont ava 復雜度 tps ng- 劍指offer views gpo 題目描述:輸入一個鏈表,輸出該鏈表中倒數第k個結點。 題目鏈接:鏈表中倒數第k個結點 思路:指向首結點的第1個指針走k-1步,如果後繼結點為空,則返回null,第1個指針指向第k
鏈表中倒數第k個結點
space 一起 itl string cstring 倒數第k個節點 head %d urn 題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 #include <iostream> #include <cstdio> #include
牛客(14)鏈表中倒數第k個結點
描述 listnode 題目 spa 一個 color AI sem ack // 題目描述 // 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 public class ListNode { int val; ListN
查詢單鏈表的倒數第k個結點,要求只能遍歷一次連結串列
pNode FindLastKNode(pList plist, int k) { pNode pFast = plist; pNode pSlow = plist; if (plist == NULL || k <= 0) { return NULL;
14.鏈表中倒數第k個結點
就是 title 14. head 輸入 public bject solution while 題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 題目解答 方法一: /* public class ListNode { int val; List
面試題22:鏈表中倒數第 K 個結點
const str find color func pid pri truct view NowCoder <?php header("content-type:text/html;charset=utf-8"); /* * 輸入一個鏈表,輸出該鏈表中倒數第k個結
【LeetCode & 劍指offer刷題】鏈表題4:22 刪除鏈表中倒數第k個結點(19. Remove Nth Node From End of List)
star urn n+1 valid ffffff 防禦性編程 normal move rgb 【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 19. Remove Nth Node From End of List Given a l
求連結串列中倒數第k個結點
ListNode* FindKthToTail(ListNode* PListHead,unsigned int k) { if(pListHead == NULL) return NULL; ListNode* pAhead = PListHead;
19.Remove Nth Node From End of List(移除單鏈表中倒數第N個結點)
Given a linked list, remove the nth node from the end of list and return its head. For example,