我是Java的新手。
我创建了一个方法,它将从LinkedList中删除除第一个元素之外的元素。这个想法是,如果LinkedList的元素数据(以整数为单位)与参数匹配,则布尔值将设置为true。一旦布尔值设置为 true,它将删除也与初始元素匹配的任何元素。
现在来看看问题。例如,如果我要从此LinkedList中删除5个,除了第一个:
5 5 5 6 5 7 8 9
我会得到这样的结果:
5 5 6 7 8 9
如您所见,它没有删除第二个位置上的5。我的代码有什么问题吗?
顺便说一下,这是代码
public void append(int data) {
Node newNode = new Node(data);
if (head == null) {
head = new Node(data);
return;
}
Node lastNode = head;
while (lastNode.next != null) {
lastNode = lastNode.next;
}
lastNode.next = newNode;
return;
}
public void insert(int data) {
Node newData = new Node(data);
newData.next = head;
head = newData;
}
public void removeExceptFirst(int dataValue) { //The mentioned method
boolean duplicate = false;
Node currentNode = head;
while (currentNode.next != null) {
int value = currentNode.next.data;
if (value == dataValue) {
if (!duplicate) {
duplicate = true;
currentNode = currentNode.next;
} else {
currentNode.next = currentNode.next.next;
}
} else {
currentNode = currentNode.next;
}
}
return;
}
GCT1015
神不在的星期二
呼唤远方
相关分类