美文网首页
[剑指offer][Java]反转链表

[剑指offer][Java]反转链表

作者: Maxinxx | 来源:发表于2019-06-20 09:43 被阅读0次

    题目

    输入一个链表,反转链表后,输出新链表的表头。

    程序核心思想

    因为要使一个结点的next指针指向它前面的结点,就需要一个或两个指针来记录这两个结点(一个也行?a.next.next = a),但是一定需要再加一个指针来记录这个结点——它的next结点指向上一个结点(如果不多加一个指针,会失去它原来next指针指向的下一个结点的信息)——的下一个结点。然后分别移动一位,修改指向即可。

    Tips

    代码

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode ReverseList(ListNode head) {
            if(head == null)    return null;
            
            ListNode a = head;
            ListNode b;
            ListNode c;
            
            if(a.next != null){
                b = a.next;
            }else{
                return a;
            }
                
            if(b.next != null){
                c = b.next;
            }else{
                b.next = a;
                a.next = null;
                return b;
            }
            
            a.next = null;
            while(c != null){
                b.next = a;
                a = b;
                b = c;
                c = c.next;
            }
            b.next = a;
            return b;
        }
    }
    

    相关文章

      网友评论

          本文标题:[剑指offer][Java]反转链表

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