題目:輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第1個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1、2、3、4、5、6。這個鍊錶的倒數第3個結點是值為4的結點。
//結構體節點
struct listnode
};
listnode*
findkthtotail
(listnode* plisthead,
unsigned
int k)
//判斷鍊錶長度是否大於等於k
if(count < k)
return
null
;//兩個指標一起移動
while
(psecond !=
null
)return pfirst;
}
第一種方法比較容易想到,但是時間複雜度不是令人滿意;
第二種方法比較巧妙,使用兩個指標解決問題,當第二個指標為null的時候,就找到了倒數的k個數。
《劍指Offer》之鍊表中倒數第k個結點
題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思路分析 由於是要找到倒數第k個結點,而鍊錶又不可以直接索引,因此,引入棧儲存各個鍊錶的結點,利用棧的反序功能,然後只需要返回第k個結點就可以了 本題中需注意 unsigned int 和int的轉換 k的值不能等於0或者大於鍊錶的總長度 鍊錶為空...
劍指Offer之鍊表中倒數第k個結點
題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。hint 請務必使用鍊錶。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為兩個整數n和k 0 n 1000,0 k 1000 n代表將要輸入的鍊錶元素的個數,k代表要查詢倒數第幾個的元素。輸入的第二行包括n個數t ...
劍指Offer之鍊表中倒數第k個結點
題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。hint 請務必使用鍊錶。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為兩個整數n和k 0 n 1000,0 k 1000 n代表將要輸入的鍊錶元素的個數,k代表要查詢倒數第幾個的元素。輸入的第二行包括n個數t ...