做題的時候碰到了需要倒置線性鍊錶的問題,但是它並不是完全倒置,而是分段倒置。具體題目如下:
reversing linked list:
given a constant kk
and a singly linked list ll
, you are supposed to reverse the links of every kk
elements on ll
. for example, given ll
being 1→2→3→4→5→6,
if k = 3k=
3, then you must output 3→2→1→6→5→4;
if k = 4k=
4, you must output 4→3→2→1→5→6.
可以看到在倒置中涉及了邊界和末尾的問題。
其實說起結點倒置,我第乙個就想到了堆疊,節能又簡短的資料結構。
後來又一尋思,這其實不就是鍊錶的多次頭插法麼。
然後又思索了一下,哦,原來堆疊的實現其實也就是頭插法。
至於考慮末尾不倒置的問題,則可以完全用
for(int i=length(l);i>0;i-k)
鍊錶的倒置
public static void reorder ref node listhead node lefthead listhead node righthead null node current lefthead.next lefthead.next null while current nu...
leetcode鍊錶題心得
給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2輸出 1 2示例 2 輸入 1 1 2 3 3輸出 1 2 3思路一 直接方法 definition for singly linked list.class listnode def init self,x s...
單向鍊錶的倒置
首先要判斷當鍊表的長度為0或者1的時候,直接返回當前節點即可,否則需要兩個輔助 指標 pre next,分別指向頭結點的前結點和後結點,不然next屬性改變的時候就會丟失原先列表的結點位址。首先讓pre null,next null 迴圈當head null 的時候,讓next head.next,...