輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。
解法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 ...