鍊錶倒置演算法題的心得

2021-07-29 06:02:02 字數 642 閱讀 7379

做題的時候碰到了需要倒置線性鍊錶的問題,但是它並不是完全倒置,而是分段倒置。具體題目如下:

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,...