以下方法的目标是删除链表中第一个之后的任何数字,该数字大于之前的数字。一旦删除它,它也会检查该数字与前一个 - 否则继续。
示例列表:
[1,2,3,4,5,0,0,1,2,1]
会产生
[1,0,0]
因为移除了(2> 1)2,移除了(3> 1)3,移除了(4> 1)4,移除了(5> 1)5,(0 <1)没有发生(当前列表= [1,0],(0 == 0),没有任何事情发生list = [1,0,0],(1&gt; 0)被删除... ect
我现在的代码留下最后一个元素,而不是[1,0,0]它读取[1,0,0,1]
当前代码:
public void deleteLarger() {
Node<T> current = head;
Node<T> previous = null;
while(current != null) {
if (previous != null){
if (current.getValue().compareTo(previous.getValue()) > 0){
remove(current.getValue());
}
if (current.getValue().compareTo(previous.getValue()) < 0){
remove(previous.getValue());
}
}
previous = current;
current = current.getNext();
}
}
谢谢!
答案 0 :(得分:0)
public void deleteLarger() {
Node<T> current = head;
Node<T> previous = null;
while(current != null) {
if (previous != null && current.getValue().compareTo(previous.getValue()) > 0){
Node<T> toremove = current;
current = current.getNext();
remove(toremove.getValue()); // or remove(toremove); ?
} else {
previous = current;
current = current.getNext();
}
}
}