单链表反转

作者: 白马王朗 | 来源:发表于2018-03-18 09:15 被阅读15次

    数组中a[i] 与 a[j] 如果需要调换位置,我们通常会定义一个中间变量来暂时存放变量,这是一个思想:

    int tmp = a[i];
    a[i] = a[j];
    a[j] = a[i];
    

    这样我们的数组中坐标为i、j的两个元素就进行了交换。

    切入正题,我们需要做单项链表的反转,同样用到这个道理。
    思想:定义三个变量,头结点head,已经被反转的头结点prev,头结点的下一个节点数据tmp。

        //遍历
        private static Node reverseList(Node head) {
            Node prev = null;
            while (head != null) {
                Node tmp = head.getNext();
                head.setNext(prev);
                prev = head;
                head = tmp;
            }
            return prev;
        }
    
        //递归调用
        private static Node recursiveNode(Node node) {
            if (node == null || node.getNext() == null) {
                return node;
            }
    
            Node res = recursiveNode(node.getNext());
    
            node.getNext().setNext(node);
            node.setNext(null);
            return res;
        }
    

    相关文章

      网友评论

        本文标题:单链表反转

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