單鏈表反轉 java版

2021-08-02 02:10:12 字數 992 閱讀 2990

head—>a—->b—->c

變成:

head—>c—->b—->a

我們可以用迴圈的方式去實現,遍歷一次鍊錶即可。

1.用乙個臨時變數tmp儲存 a的下乙個元素b,a的next指向null,即」由頭變尾」,head指向null。

head—->null

a b—->c

tmp—->b

2.因為此時tmp就是b,所以將tmp指向tmp的下乙個元素c。將b next指向a

head—->null

a <—– b c

tmp—->c

3.因為此時tmp就是c,所以將tmp指向tmp的下乙個元素null。將c next指向b

head—->null

a <—– b <—– c

tmp—->null

4.head——->c

/**

* 鍊錶反轉

*@author guohui

* */

public

class

reverlink

}/**

* 鍊錶反轉

*@param head

*/public

static

void

reverse(nodehead)

boolean isfisrt = true;

nodepre = head;

nodecur = head.next;

nodetmp;

while(cur!=null)else

pre = cur;

cur = tmp;

}head.next = pre;

}}/**

* 鍊錶資料結構

*@author guohui

* *@param

*/public

class

node

反轉單鏈表(java)

反轉單鏈表 輸入煉表頭節點,輸入反轉後的煉表頭節點 第一次想到的解法 時間和空間複雜度較高 將單鏈表每個節點依次讀入到棧中,然後出棧,重新連線成反轉後的單鏈表 public static listnode convert listnode node stack stack new stack 入棧 ...

單鏈表反轉 python版

如下 class node object def init self,elem,next none self.elem elem self.next next def reverselist head if head none or head.next none 若煉表為空或者僅乙個數就直接返回 r...

Java單鏈表的反轉

前段時間有同事面試,給面試的人都提乙個演算法問題那就是單鏈表的反轉,好多小夥伴都不會,或者表示一聽演算法就懵逼了,自己寫了乙個。就是5 4 6 8 9 1 2 7,反轉輸出7 2 1 9 8 6 4 5,我自己寫的反轉有兩種方式。一種是遞迴,一種是遍歷,也是很普通的兩種方式。一 遞迴的方式 先看圖 ...