【问题标题】:Java: Adding Inputs to a Linked ListJava:将输入添加到链接列表
【发布时间】:2021-03-16 20:37:53
【问题描述】:

我正在尝试将输入添加到链接列表中。输入来自文件。我可以打印出这些值,但只有第一个值被添加到链表中。不知道我错过了什么。一切都应该从头开始编写。任何帮助表示赞赏。

        public void addNode(int data) {
            Node newNode = new Node(data);

            if(head == null) {
                head = newNode;
                tail = newNode;
            }
        }

        public void display() {
            Node current = head;
            System.out.println("Nodes of a Singly linked list: ");
            while (current != null) {

                System.out.print(current.data + " -> ");
                current = current.next;
            }
           
        }
        

结果:


Nodes of a Singly linked list: 
1 -> 

【问题讨论】:

  • 您的添加功能错误,您还需要使用head.next = newNode 将其链接到新节点。
  • 看看你的addNode(int data)方法——如果head==null你把head & tail指向新节点。美好的。但如果 head 不为空,你 什么都不做。您没有“其他”子句。因此,第一个节点之后的节点被创建为Node,但从未对它们进行任何操作。它们刚刚被送入太空。
  • @StephenP 很好的解释,实现如下。
  • @StephenP 谢谢,这真的很有帮助。

标签: java java.util.scanner singly-linked-list


【解决方案1】:

这是因为您的addNode() 函数不正确,请检查以下实现。

     public void addNode(int data) {
        Node newNode = new Node(data);

        if(head == null) {
            head = newNode;
            tail = newNode;
        }
        else
        {
            tail.next = newNode;
            tail = newNode;

        }

【讨论】:

  • 上面的代码是错误的——因为tail永远不会更新并且在大多数情况下会创建2个节点...... else块可以简化为tail.next = newNode; tail = newNode;
  • @MrR 谢谢!这是对的。我已经根据你和 StephenP 的回复修复了我的代码。现在可以了。
  • @MrR 我手动实现 LinkedList 已经有一段时间了,考虑到您的评论,由于我没有注意复制的代码,因此创建了两个节点...谢谢跨度>
猜你喜欢
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
相关资源
最近更新 更多