有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java发现双链表中的最小元素无效

我写了这个代码,在链表中找到一组数字的最小值

public DLNode<T> getMinimum() {
    if (isEmpty()) {
        return null;
    }
    DLNode<T> curr = head;
    DLNode<T> min = curr;
    T temporaryMinimum = head.getElement();
    while (curr.getElement() != null) {
        if ((Integer) temporaryMinimum < (Integer) curr.getElement()) {
            min = curr;
        }
        curr = curr.getNext();
    }
    return min;
}

我正在用这个代码块测试它

public static void getMinElement(){
    int[] data = {2, 3, 5, 1, 6};
    //Add elements to the list from array data
    DoublyLinkedList<Integer> ll = new DoublyLinkedList<>();

    for (int i = 0; i < data.length; i++) {
        ll.AddLast(data[i]);
    }

    System.out.println("Size: " + ll.size);

    System.out.println("Minimum Element is: " + ll.getMinimum());

}

在main中这样称呼:

getMinElement();

它不会抛出任何错误,但它似乎进入了无限循环或其他什么(取决于我每次启动机器时,机器上使用了多少CPU)

我想指出的是,我的IDE(IntelliJ IDEA)没有显示任何错误或不受控制的循环或类似的警告。 在过去的几天里,我一直在思考这个问题,没有任何运气,现在我已经没有主意了

非常感谢您的帮助

编辑:我的DLNode类是:

class DLNode<T> {
    DLNode<T> Element;
    T data;
    DLNode<T> next;
    DLNode<T> prev;

    DLNode(T data, DLNode<T> next, DLNode<T> prev) {
        this.data = data;
        this.next = next;
        this.prev = prev;
    }

    T getElement() {
        return data;
    }
    public DLNode<T> getPrev() {
        return prev;
    }
    public void setPrev(DLNode<T> prev) {
        this.prev = prev;
    }
    public DLNode<T> getNext() {
        return next;
    }
    public void setNext(DLNode<T> next) {
        this.next = next;
    }
}

共 (0) 个答案