劍指offer15 鍊錶中倒數第k個結點

2021-09-08 13:15:42 字數 428 閱讀 1244

錯誤**

class

solution

while(p1->next !=null)

return

p2; }

};

會報「段錯誤:您的程式發生段錯誤,可能是陣列越界,堆疊溢位(比如,遞迴呼叫層數太多)等情況引起」

因為k的數字可能大於整個鍊錶的長度,這時p1可能指向空指標,空指標的next就會報錯

如果去計算一遍整個鍊錶的長度,再判斷k與鍊錶長度的大小,這樣還是會和笨辦法一樣遍歷兩次鍊錶,直接在for迴圈裡新增判斷條件只遍歷一次鍊錶

正確**

class

solution

}while(p1->next !=null)

return

p2; }

};

劍指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 ...