輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始,即鍊錶的尾節點是倒數第乙個節點。例如乙個鍊錶有6個節點,從第乙個節點開始它們的值是1、2、3、4、5、6。這個鍊錶倒數第3個節點是值為4的節點。
指定兩個指標pbefore和pafter,均指向第乙個節點,起先前面的指標pbefore走k步,然後兩個指標依次向後走,當pbefore為空時即走到鍊錶外,此時pafter即為倒數第k個節點,這裡需要注意當k超出鍊錶節點個數的情況。可以在pbefore往前走k步中判斷。
int findkthtotail(listnode **head, int k)
//前面指標還沒走k步就已經超出鍊錶(k>鍊錶個數)
if(i < k)
return -1;
while(pbefore)
return pafter->data;
}
劍指offer 15 鍊錶中倒數第k個結點
package listtest.findknode 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思路 定義兩個指標,第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動,從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。兩個指標距離保持在k 1,當第乙個指標到達鍊錶的尾結點時,第二個...
劍指Offer15鍊錶中倒數第k個結點
題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點,為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第乙個結點,例如 乙個鍊錶有6個結點,從頭結點開始他們的值依次是1,2,3,4,5,6.這個鍊錶的倒數第三個結點是值為4的結點。分析 這是乙個很經典的老的題,如果第一次看到這個題的話,可能想...
劍指offer 15 鍊錶中倒數第k個結點
class listnode 題目 輸入乙個鍊錶輸出鍊錶的倒數第k個結點 解法 設定兩個標記,先讓第乙個走k步,接著讓他們同步移動,知道第乙個到末尾,第二個則為倒數第二個結點 public class main public static listnode reverselist listnode ...