非Arg构造函数Java



我在插入新节点的方法中调用构造函数。当我添加新节点时,默认构造函数正在创建具有默认值的新节点。我只想使用插入方法插入值,如下面的代码所示。有什么方法可以避免第一个节点成为默认节点。

class Node {
    Node right, left;
    int data = 0;
    Node() {
    }
    Node(int data) {
        this.data = data;
    }
    public void insert(int value) {
        if (value <= data) {
            if (left == null) {
                left = new Node(value);
            } else {
                left.insert(value);
            }
        } else {
            if (right == null) {
                right = new Node(value);
            } else {
                right.insert(value);
            }
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Node new_node=new Node();//creating first node with 0 value
        new_node.insert(5);
        new_node.insert(4);
        new_node.insert(9);
        new_node.insert(23);
        new_node.insert(70);
        new_node.display();
    }
}
您可以使用

第一个值作为第一个元素:

Node new_node = new Node(5); // create 1st node with 1st value

或者,您可以使用不希望出现在列表中的值定义一个新的默认构造函数(假设-1(,但您必须小心列表中实际上不是列表一部分的此元素,这使得实现其他操作更加棘手:

Node() { data = -1; }

但所有这些都是一个更大问题的征兆:你不应该在Node类中处理你的列表的头。最好创建一个新类,让我们将其称为MyList并在其上定义一个Node head属性,并且所有插入/更新/删除/搜索操作都应在该类上实现。

保持头部分离很重要,因为会有修改head的操作。例如,insert()方法不考虑要插入的节点应位于现有列表开头的情况。

相关内容

  • 没有找到相关文章

最新更新