剑指offer——Java实现

面试题16:反转链表

2016-10-08  本文已影响40人  _minimal

题目描述

输入一个链表,反转链表后,输出链表的所有元素。

代码实现

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        
        ListNode pre = null;
        ListNode curr = head;
        ListNode next = null;
        
        while(curr != null){
            next = curr.next;
            curr.next = pre;
            pre = curr;
            curr = next;
        }
        
        return pre;
    }
}

主要思路

1、首先我们需要3个结点,第一个是当前结点,第二个是当前结点的前一结点,因为我们需要将当前结点指向前一结点;第三个是当前结点的下一结点,因为每次将当前结点指向前一结点前,需要先保存下一结点,否则链表会断裂
2、递归解法不是很理解,有点绕,就不研究了,哪种方法简单就用哪种吧!

上一篇下一篇

猜你喜欢

热点阅读