【发布时间】:2021-03-09 17:04:01
【问题描述】:
我需要冒泡排序单链表。 这是我尝试这样做的代码。 所以它进入无限循环并且不起作用。 我正在尝试对单链表进行冒泡排序。
procedure Sort;
var
temp :char;
curr :node;
didSwap :boolean;
begin
didSwap := true;
while (didSwap = true) do begin
didSwap := false;
curr := head;
while (curr^.next <> nil) do begin
if (curr^.value > curr^.next^.value) then begin
temp := curr^.value;
curr^.value := curr^.next^.value;
curr^.next^.value := temp;
didSwap := true;
curr := curr^.next;
end;
end;
end;
end;
【问题讨论】:
-
这是您学习使用调试器的绝佳机会。在程序顶部设置断点并运行。当断点被命中时,一次单步执行一行代码以查看逻辑失败的地方。
-
这将是非常低效的。大概这是家庭作业?
-
仅供参考:对于链表,实现选择排序更简单
-
KenWhite 它以空列表结尾。 delphi中的好调试器。 耸耸肩 DavidHeffernan,是的,我迫不及待地想学习一种更好的语言,比如 Python 或 C++ 作为家庭作业。德尔福只是嗯。 MBo好吧,让我看看它的实现,毕竟它是关于排序单链表,而不是双链表。
-
@KenWhite 失败:while (curr^.next nil) do begin if (curr^.value > curr^.next^.value) then begin temp := curr^.value;当前^.value := 当前^.next^.value; curr^.next^.value := temp; didSwap := 真;当前 := 当前^.下一个;结尾;结束;
标签: delphi pascal bubble-sort