在链表中找到最小值

find smallest value in linked list

无法弄清楚这一点,每次我 运行 我的代码程序都会永远运行,链表中的其他所有内容都运行良好。包括删除。

public Node smallestValue() {
    Node current = firstL;
    int min = current.data;

    if (!isEmpty()) {
        while (current != null) {
            if (min < current.data) {
                min = current.data;
                current = current.next;
            }
        }
    } else {
        System.out.println("empty list");
    }

    System.out.println();
    System.out.println(min);

    return current;
}

无论是否min < current.data,都需要提前current。只需将作业移至 if 之外。 (此外,正如@0x499602D2 在评论中指出的那样,要找到您需要更改 min 的最小值,当它 current.data 时。)

while(current != null){
    if(min > current.data){
        min = current.data;
    }
    current = current.next;
}

将此作为 for 循环执行可能更清晰:

for (Node current = firstL, int min = current.data;
     current != null;
     current = current.next)
{
    min = Math.min(min, current.data);
}

因为这是在空列表的测试中,所以如果 firstLnull 则不会崩溃(我认为如果列表不为空则不会发生) .