我正在处理链接列表,并且当前无法通过键值删除speficic节点。我在学校问了一个帮手,他不确定为什么它不起作用(另外一个问题也有很多的问题,我很抱歉,看起来有多严重)删除节点的问题
这是我的删除方法:
public void remove(int key) throws Exception {
Node tmp = first;
Node pred = first;
while (tmp != null) {
if (tmp.keyValue == key) {
pred = tmp;
tmp = tmp.next;
} else {
tmp = tmp.next;
}
}
这是我的主要方法creaing名单,并试图将其删除,并打印:
OrderedLinkedList oLL3 = new OrderedLinkedList();
try {
oLL3.insert("Should be removed", 5);
oLL3.insert("Shouldn't be removed 2nd", 15);
oLL3.insert("Shouldn't be removed", 10);
} catch (Exception e) {
System.out.println("Error: Two nodes with the same key value and the newest one won't be stored.");
}
try {
oLL3.remove(5);
} catch (Exception r) {
System.out.println("Error:No nod with the key value to be removed");
}
System.out.print("toString test removing node: \n" + oLL3.toString());
System.out.println("Number of nodes in the List:" + oLL3.listCount());
}
我的tmp和pred节点变量被分配给remove方法中的第一个节点。或者你的意思是别的吗? –
它们是局部变量。分配给他们不会影响他们所属方法之外的任何内容。 – khelwood
所以你说的不是先分配方法中的本地东西,而是先分配一些不是局部变量的东西? (我也只是不能创建任何成员变量,除了第一个。) –