1. 程式人生 > 其它 >經典面試題: java實現單鏈表翻轉

經典面試題: java實現單鏈表翻轉

技術標籤:資料結構和演算法資料結構

經典面試題: java實現單鏈表翻轉

思路分析:

單鏈表的翻轉,我們抽象來看,其實就是將每個節點的next 指向他的前一個節點,那麼我們從第一個節點開始翻轉,將第一個節點的next指向null,把第二個節點的next 指向第一個節點,第三個節點的next指向 第二個節點。。。。。

這裡需要使用三個輔助節點: pre :翻轉節點的前一個節點,cur: 當前需要翻轉的節點,next:翻轉節點的下個節點

public class ListReverse {
    public ListNode reverseList(ListNode head) {

        //初始化pre為null,讓第一個節點首先指向null
ListNode pre = null; //cur就是我們當前需要翻轉的節點,將該節點的next指向他的前一個節點 ListNode cur = head; while (cur !=null){ //需要先將當前的節點的next拿到,否則我們直接翻轉的話 //就讓後面的節點斷開練習了 ListNode next = cur.next; //進行翻轉 cur.next = pre; //上面的步驟指向完,一個節點翻轉完成,我們需要為
//下一次的翻轉做準備,將pre指向往後移一位 pre = cur; //讓cur指向next,下一次就要翻轉你了 cur = next; } return pre; } } class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }

圖解; 第一個行是第一次 翻轉,第二行是第二次翻轉。

 val = x;
}

}


圖解; 第一個行是第一次 翻轉,第二行是第二次翻轉。

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201213141954298.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzNjIwNA==,size_16,color_FFFFFF,t_70)