面试题16:反转链表

作者: _minimal | 来源:发表于2016-10-08 10:46 被阅读40次

    题目描述

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

    代码实现

    /*
    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、递归解法不是很理解,有点绕,就不研究了,哪种方法简单就用哪种吧!

    相关文章

      网友评论

        本文标题:面试题16:反转链表

        本文链接:https://www.haomeiwen.com/subject/qkduyttx.html