1. 程式人生 > >leetcode206. 反轉連結串列(java實現)

leetcode206. 反轉連結串列(java實現)

題目:反轉一個單鏈表。

示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL

思路:

  • 迭代:讓當前節點的下一個節點是前節點,然後當前節點和下一個節點分別往後移。
  • (遞迴)

演算法

//迭代
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null||head.next==null)//如果連結串列為空或者只有一個值那麼返回他自己
            return head;
        ListNode preNode=null;//前一個節點
        ListNode curNode=head;//當前節點
        ListNode nextNode=null;//後一個節點
        while(curNode!=null){
            nextNode=curNode.next;//指向下一個節點
            curNode.next=preNode;//當前節點的next指向前一個節點
            preNode=curNode;//前一個節點後移
            curNode=nextNode;//當前節點後移
        }
        return preNode;
    }
}