輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭
阿新 • • 發佈:2018-12-25
因為這道題花了自己的一些時間,所以還是想寫一篇部落格紀念一下。
程式碼如下
package dai.List; /** * 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 * @author 18491 * */ public class ReverseList02 { public ListNode02 reverseList(ListNode02 head) { if(head == null) { return null; } //最終需要實現的是 將列表1 -> 2 -> 3 -> 4 轉換為1 <- 2 <-3 <- 4 //為了能夠快速反轉列表,需要定義節點tem來儲存當前節點的next值,定義pre來儲存節點的上一個值 ListNode02 tem = null; ListNode02 pre = null; while(head != null) { //儲存當前節點的下一個節點,防止出現斷列 tem = head.next; //儲存好之後,則將當前節點指向pre //例如,當前是第一次迴圈,則1 -> 2 轉變為 null <- 1;方向發生改變,程式碼實現如下 head.next = pre; //記住當前每個節點的狀態,我們將節點都向後移一步 pre = head; head = tem; } return pre; } } class ListNode02 { int val; ListNode02 next; public ListNode02(int val){ this.val = val; } }