我在链接列表上调用此方法,该链接列表包含5个节点,其中int数据< 4,3,2,1,5>我想删除奇数整数并返回< 4,2>
我在main方法mylist.removeOdds中运行
它似乎工作正常但从不删除(将前一个节点分配给当前的节点)
输出
此输出一直持续到我终止
当条件循环进入
当前元素3前一元素4
如果满足条件
当前元素3前一元素4
如果满足条件
当前元素3前一元素4
如果符合条件
Public void removeOdds() {
Node current = head;
Node previous=null;
while ((current.getNext()) != null) {
if (head == null) {
System.out.println("The list is empty");
} else {
while (current != null && (current.getElement()) % 2 != 1) {
previous = current;
current = current.getNext();
System.out.println("while condition loop entered");
System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());
}
if ((current.getElement()) % 2 == 1) {
System.out.println("if condition met ");
previous.setNext(current.getNext());
System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());
}
}
}
答案 0 :(得分:1)
在以下声明之后 -
previous.setNext(current.getNext());
您需要添加此声明
current.setNext(current.getNext());
答案 1 :(得分:-1)
您最好提供Node Class的结构。
Public void removeOdds() {
Node current = head;
Node previous=null;
while ((current.getNext()) != null) {
if (head == null) {
System.out.println("The list is empty");
} else {
while (current != null && (current.getElement()) % 2 != 1) {
previous = current;
current = current.getNext();
System.out.println("while condition loop entered");
System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());
}
if ((current.getElement()) % 2 == 1) {
System.out.println("if condition met ");
previous.setNext(current.getNext());
current=current.getNext();
System.out.println("current element " + current.getElement()+" previous element "+ previous.getElement());
}
}
}