題目描述
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
解題思路:
方法一:
定義兩個指標,乙個指標先向前移動k-1步(在移動過程中判斷是否越界)
第二個指標指向頭,然後兩個指標同時向前移動,第乙個指標指向最後乙個節點的時候,第二個指標指向第k個結點
方法二:先全部遍歷一遍,找到鍊錶中結點數目,然後進行k和結點數目length的比較,把特殊錯誤的情況處理出來,然後再用一中的方法用兩個指標,找到倒數第k個結點。
1 #include 2 #include3using
namespace
std;
4struct
listnode
10};
11 listnode *createlist(int
n)12
26 p->next=null;
2728
return head->next;29}
30/*
-------------------------輸出鍊錶-----------------------------------
*/31
void printlist(listnode *h)
3242}43
class
solution
56else
5760
}61 pbehind = plisthead;//
當phead指向鍊錶第k-1和節點是,pbehind指向鍊錶的頭
62while(phead->next!=null)
6367
return
pbehind;68}
69 listnode* findkthtotail2(listnode* plisthead, unsigned int
k) 79
if(k ==length)
80return
plisthead;
81else
if(k>length)
82return
null;
83else
//取k%length
14 鍊錶中倒數第k個結點(劍指offer)
14.鍊錶中倒數第k個結點 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。1.思路 我們可以定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,...
劍指offer 第14題 鍊錶中倒數第k個結點
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。雙指標,p1先走k步,然後同時走,p1到頭時候返回p2 倒數第k個就是正數第n k 1個,從第乙個結點到第n k 1個結點一共要走n k步,從第k 1個結點到n 1個結點也是n k步,從第乙個結點到第k 1個結點,走k步 coding utf 8 class...
劍指Offer (14)鍊錶中倒數第k個結點
題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。實現如下 最後乙個節點定義為倒數第乙個節點 1 2 3 4 5 p s p s eg.尋找倒數第3個節點 k 1 2 要想一次遍歷找到倒數第k個節點,關鍵在於最後乙個節點與倒數第k個節點之間相差k 1個節點 所以要保證兩個指標之間一直保持k 1個節...