題目描述
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
思路:舉個例子,。倒數第3個為4,即正數第6-(3-1)個,i從1開始。據此我們可以得出乙個方法:先遍歷一邊求出鍊錶結點總個數n,然後從i=1開始找到第n-(k-1)個結點即可
/*
public class listnode
}*/public
class solution
phead=head;
for(int i=1;i1)&&k<=nodesnum;i++)
if(k>nodesnum)
return phead;
}}
這樣會遍歷兩次鍊錶,能不能只遍歷一次?
可以,定義兩個指標,第乙個指標phead從頭走k-1步,然後第二個指標從頭開始和第乙個指標同時走,當第乙個指標走到鍊錶尾部時,第二個指標恰好走到倒數第k個結點。
/*
public class listnode
}*/public
class solution
else
}pbehind=head;
while(phead.next!=null)
return pbehind;
}}
note:
以下三種情況需另外給予考慮:
case1:頭指標為null
case2:k<=0
case3:k大於鍊錶節點個數
劍指offer之面試題16 反轉鍊錶
題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。思路 借助圖形來分析一下反轉鍊錶需要改變哪些指標。假設某一時刻,經過若干操作,我們已經把h點之前的指標調整完畢,現在反轉i指標指向的結點。由圖可知,為了防止指標的斷開,需要儲存i的next指標,為了完成反轉,需要知道i的前乙個指標prev,當然...
劍指offer面試題15
面試題15 鍊錶中倒數第k個結點 題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第乙個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個結點是值為4的結點。預備知識 鍊錶結點的定義如下 ...
劍指Offer之面試題26 複雜鍊錶的複製
所有 均通過g 編譯器 測試,僅為練手紀錄。面試題 26 複雜鍊錶的複製 題目 請實現函式 complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個 m pnext 指標指向下乙個結點外,還有乙個 m psibling...