遞迴(鍊錶反轉)

2021-09-11 06:21:18 字數 686 閱讀 2904

將乙個單鏈表反轉,結果得到的是鍊錶的最後乙個,以及第乙個。確實是反轉了,但是只剩下兩個元素了。

public static node reversenode(node node)

node newheadnode=reversenode(node.getnext());

node.setnext(null);

newheadnode.setnext(node);

return newheadnode;

}

錯誤在於 newheadnode.setnext(node); 將第乙個節點指向下乙個節點改為指向最後乙個節點。

正確的應該是 通過原來的第乙個節點(a)得到第二個節點(b)。節點(b)為反轉後的最後乙個節點,使節點b 指向節點a,使節點a指向null。

public static node reversenode(node node)

node newheadnode=reversenode(node.getnext());

node lastnode=node.getnext();

node.setnext(null);

lastnode.setnext(node);

return newheadnode;

}

通過畫圖的方式就不會錯啦! 

遞迴控制 鍊錶反轉

1.反轉思路 2.j a 實現 鍊錶反轉的意思是將1 2 3 4 5 null反轉為5 4 3 2 1 null 反轉鍊錶的遞迴思路如下 假設2345這一段鍊錶能夠反轉成功,則只需將1 2345的指標改為2345 1,然後1 null即可 以此類推,即可求得反轉鍊錶 2.1 結點和建立鍊錶的實現 結...

反轉鍊錶(非遞迴,哨兵,遞迴)

給你單鏈表的頭節點 head 和兩個整數 left 和 right 其中 left right 請你反轉從位置 left 到位置 right 的鍊錶節點,返回 反轉後的鍊錶 非遞迴解法 反轉cur.next cur.next pre pre cur cur next next cur.next 新建...

遞迴實現鍊錶的反轉

我對遞迴的理解一直不是非常透徹,這裡想要用遞迴實現鍊錶的反轉,寫的時候發現自己連鍊錶的定義都忘記了 還是 寫得太少了 include stdio.h include include iostream using namespace std struct node node creat int a r...