美文网首页Java学习笔记Java 杂谈Java
链表逆序输出数值(并且不能改变链表结构)

链表逆序输出数值(并且不能改变链表结构)

作者: firststep | 来源:发表于2019-04-09 16:21 被阅读2次

    链表逆序输出数值

    创建一个链表之后,翻转该链表返回一个链表,该链表由node1->node2->node3变成node3->node2->nod1.同时不能改变结构。

    思路

    首先拿到这道题第一想法是,如何把node的next当成pre来用。肯定是需要先循环中把最后面的一个放到最前面。定义两个node,一个nextnode一个prenode。先拿出node的下一个赋给nextnode方便下一步的调用,接着把该节点node的值指向prenode,下一步把node的值赋给nodepre等待下一个node的连接。最后把nextnode的值赋给node继续循环。

    代码

    package likendListStudy;
    
    public class ReverseLinkedListNotChange {
    
        public Node ReverseList(Node node) {
            if (node == null) {
                return null;
            }
            Node nodePre= null;
            Node nodeNext= null;
            while (node != null) {
                // 首先拿到链表下一个要拿的node
                nodeNext = node.getNest();
                // 把node下一个存成定义好的上一个pre。
                node.setNest(nodePre);
                // 把node放到pre中
                nodePre = node;
                // 把要查的节点赋给node
                node = nodeNext;
            }
            return nodePre;
        }
    
        void printList(Node node) {
            while (node != null) {
                System.out.print(node.getData()+",");
                node = node.getNest();
            }
        }
    
        public static void main(String args[]) {
            Node node = new Node(1);
            Node node1 = new Node(2);
            Node node2 = new Node(3);
            Node node3 = new Node(4);
            Node node4 = new Node(5);
            node.setNest(node1);
            node1.setNest(node2);
            node2.setNest(node3);
            node3.setNest(node4);
            ReverseLinkedListNotChange reverseLinkedListNotChange = new ReverseLinkedListNotChange();
            Node nodef= reverseLinkedListNotChange.ReverseList(node);
            reverseLinkedListNotChange.printList(nodef);
        }
    }
    
    

    相关文章

      网友评论

        本文标题:链表逆序输出数值(并且不能改变链表结构)

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