我在插入新节点的方法中调用构造函数。当我添加新节点时,默认构造函数正在创建具有默认值的新节点。我只想使用插入方法插入值,如下面的代码所示。有什么方法可以避免第一个节点成为默认节点。
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()
方法不考虑要插入的节点应位于现有列表开头的情况。