单链表翻转

作者: zhangxuanchen | 来源:发表于2017-02-09 19:57 被阅读7次

循环

class Node{  
        int value;  
        Node next;  
    }  
      
    Node reverseList(Node head){  
        Node p1, p2, p3;  
        if(head == null || head.next == null){  
            return head;  
        }  
        p1 = head;  
        p2 = head.next;  
          
        while(p2 != null){  
            p3 = p2.next; //保存记录下一个值  
            p2.next = p1; //指向下一个点  
            p1 = p2;  
            p2 = p3;  
        }  
          
        head.next = null;  
        head = p1;  
          
        return head;  
    }  

递归

class Node{  
        int value;  
        Node next;  
}  

public Node reverse(Node head){
     if (head == null || head.next == null) return head;
     Node nextNode = head.next;
     head.next = null;
     Node reverseRest = reverse(nextNode);
     nextNode.next = head;
     return reverseRest;
 }

相关文章

  • 翻转单链表

    翻转单链表 方法一:将单链表头插到一个新链表中 浪费空间,不过简单 方法二:使用三个指针遍历单链表,逐个点进行翻转...

  • 单链表反转的递归方法和非递归方法

    链表的节点可以定义为: 测试的输入数据,每次使用root作为方法的入参 使用循环来翻转单链表 思路 翻转单链表,其...

  • 链表的操作和算法相关

    github->demo1、创建(单链表、双链表、循环链表)2、翻转单链表(递归和非递归)3、判断链表是否存在环。...

  • 单链表翻转

    单链表的就地逆置:就地逆置即空间复杂度为O(1)一:用数组存储单链表的值,然后重新逆序赋值,效率较低。二:利用三个...

  • 单链表翻转

  • 翻转单链表

    在有关链表的题目中,最需要注意的地方就是各个结点引用的调整,否则很容易因为混乱的指向导致死循环等情况。 技巧:定义...

  • 单链表翻转

    循环 递归

  • 翻转单链表

  • 翻转单链表

    结果: 完整测试代码:

  • Reverse LinkList

    问题 翻转单链表举例:原始链表: 1->2->3->4就地翻转,翻转后: 4->3->2->1 主要思路 需要两个...

网友评论

    本文标题:单链表翻转

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