栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

链表之反转链表(不使用额外链表)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

链表之反转链表(不使用额外链表)

问题

题意:反转一个单链表。

示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

注意: 不要使用额外链表

解决

反转链表,只需要转变方向即可,由于需要从head节点开始遍历

那么需要一个currentNode 指向当前节点,tempHeadNode 指向临时头节点,virtualNode 指向 当前节点的需要指向的下一节点(或者说前节点)

private static void reverselinkedList(Node headNode) {
        Node currentNode;
        Node currentHeadNode;
        Node virtualNode;

        // 设置虚拟节点,作为当前节点的前节点
        virtualNode = new Node<>();
        virtualNode.setValue(-1);
        virtualNode.setNext(null);

        currentNode = headNode;
        while (currentNode != null){
            // 暂时保存当前Node的下一节点为Head
            currentHeadNode = currentNode.getNext();
            // 将当前节点的下一节点,设置为virtualNode , 实现反转节点
            currentNode.setNext(virtualNode);
            // currentNode,virtualNode 下移一位
            virtualNode = currentNode;
            currentNode = currentHeadNode;
        }
    }


    static class Node{
        private T value;
        private Node next;

        public T getValue() {
            return value;
        }

        public void setValue(T value) {
            this.value = value;
        }

        public Node getNext() {
            return next;
        }

        public void setNext(Node next) {
            this.next = next;
        }

        @Override
        public String toString() {
            return "Node{" +
                    "value=" + value +
                    ", next=" + next +
                    '}';
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号