在链表中找到最小值
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);
}
因为这是在空列表的测试中,所以如果 firstL
是 null
则不会崩溃(我认为如果列表不为空则不会发生) .
无法弄清楚这一点,每次我 运行 我的代码程序都会永远运行,链表中的其他所有内容都运行良好。包括删除。
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);
}
因为这是在空列表的测试中,所以如果 firstL
是 null
则不会崩溃(我认为如果列表不为空则不会发生) .