劍指offer系列 15 反轉鍊錶

2021-10-11 01:45:09 字數 916 閱讀 6588

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

解法1:借助資料結構,陣列,棧來反轉鍊錶。

/**

* 思路1:借助陣列,反轉鍊錶

* */

public listnode reverselist

(listnode head)

listnode p =head;

arraylist

list =

newarraylist

<

>()

;// 遍歷鍊錶,入陣列

while

(p!=null)

for(

int i=list.

size()

-1;i>

0;i--

) list.

get(0)

.next=null;

head=list.

get(list.

size()

-1);

return head;

}

解法2:操作指標,反轉鍊錶。

/**

* 思路2:操作指標,反轉鍊錶

* --新鍊錶,老鍊錶

* --新鍊錶除去頭結點,head

* --追加到老鍊錶的頭部,phead,ptail

*/public listnode reverselist1

(listnode head)

listnode phead=null;

listnode ptail=null;

while

(head!=null)

else

} ptail.next=null;

return phead;

}

15 劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。分析 1 2 3 4 5 1 2 3 4 5 而且這個題難在沒有頭節點 第一種方法是 非遞迴方法 struct listnode class solution return preversehead 第二種方法是 遞迴方法 struct listnode ...

15 反轉鍊錶(劍指offer)

15.反轉鍊錶 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。1.思路 這裡可以採用輔助指標的方式來進行歷求解,以下面的鍊錶為例具體分析如下 1 首先我們需要定義三個指標,分別指向當前結點 cur 前一結點 prev 後一節點 next 2 然後開始從前往後進行遍歷,在遍歷的過程中對指標進行反轉 第...

劍指offer系列 反轉鍊錶

題目描述 給定乙個單鏈表的頭節點,反轉該鍊錶,並返回反轉後的頭節點 分析 從鍊錶頭部開始向後遍歷,注意每次要儲存待反轉節點的prev和next節點 listnode reverselist listnode head return p 其中1 m n list.len 示例 給定的單鏈表為 1 2 ...