java—如何在没有 Package 类的情况下修改linkedlist的头?

xtupzzrd  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(397)

当我创建一个node对象并调用“appendtotail”时,node对象通过next属性拥有一系列节点(如预期的那样)。我试着创建一个pop,它取头(又名“this”),用一个变量引用它,然后用下一个变量覆盖它。然而,“这个”仍然和原来的头一样。我做错了什么,还是没有办法修改“this”?

public class Node {
    Node next = null;
    int data;

    public Node(int d) {
        data = d;
    }

    public void appendToTail(int d) {
        Node end = new Node(d);
        Node n = this;
        while (n.next != null) {
            n = n.next;
        }
        n.next = end;
    }

    public void popHead() {
        Node n = this;
        n = n.next;

    }
}
scyqe7ek

scyqe7ek1#

基本上,您需要构造一个自定义列表,并在末尾添加每个节点。此外,您还需要存储第一个节点,以便有循环的起点。

public class NodeList
{
    Node head=null;

    public static void main(String args[])
    {
        NodeList nl = new NodeList();
        nl.addNode(1);
        nl.addNode(2);
        nl.addNode(3);
        nl.listNodes();
    }

    public void addNode(int data)
    {
        if(head==null)
        {
            head = new Node(data);
        }
        else
        {
            Node curent = head;
            while(curent.next != null)
            {
                curent = curent.next;       
            }
            curent.next = new Node(data);
        }
    }

    public void listNodes()
    {
        if(head !=null)
        {
            Node curent = head;
            System.out.println(curent.data);
            while(curent.next !=null)
            {
                curent = curent.next;
                System.out.println(curent.data);
            }
        }
    }

    class Node 
    {
        Node next = null;
        int data;

        public Node(int d) {
            data = d;
        }
    }
}

输出

1
2
3

相关问题