Java - 不考虑链表中的最终元素

时间:2014-03-22 19:33:06

标签: java linked-list

以下方法的目标是删除链表中第一个之后的任何数字,该数字大于之前的数字。一旦删除它,它也会检查该数字与前一个 - 否则继续。

示例列表:

[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(); 
    }
}

谢谢!

1 个答案:

答案 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(); 
        }
    }
}