Java学习笔记Java 杂谈Java

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

2019-04-09  本文已影响2人  firststep

链表逆序输出数值

创建一个链表之后,翻转该链表返回一个链表,该链表由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);
    }
}

上一篇下一篇

猜你喜欢

热点阅读