数据结构与算法Java篇

反转链表

2018-10-16  本文已影响0人  NetCedar

题目描述
    输入一个链表,反转链表后,输出新链表的表头。

解题思路
    
使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。在遍历的时候,做当前结点的尾结点和前一个结点的替换。

public class Solution {
   /**
     * 链表的定义
     */
    private static class ListNode{
        int val;
        ListNode next=null;

        public ListNode(int val) {
            this.val = val;
        }
    }
      public ListNode ReverseList(ListNode head){
        if(head == null)
            return null;
        ListNode preListNode = null;
        ListNode nowListNode = head;

        while(nowListNode != null){
            ListNode nextListNode = nowListNode.next;   //保存下一个结点
            nowListNode.next = preListNode;             //当前结点指向前一个结点
            preListNode = nowListNode;                  //前任结点 到现任节点
            nowListNode = nextListNode;                 //现任节点到下一结点
        }
        return preListNode;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读