如何在pascal中交换单链表中的两个节点?
procedure List.switch(var n1,n2 : pNode);
var aux : pNode;
begin
aux := n1;
p1:= n2;
n2 := aux;
end;
(这里 pNode 是列表中节点的指针。)
节点定义如下:
pNode = ^Node;
Node = record
data : data;
next : pNode;
end;
该代码不起作用。它要么不编译,说“无法获取常量表达式的地址”,要么只是不执行任何操作。我想这与指针的工作方式有关......
我找到了相关信息here ,但我不读 C。
感谢您的建议!
最佳答案
我认为这样的事情会起作用:
function SwapNodes(first: pNode): pNode;
begin
Result := first.next;
first.next := Result.next;
Result.next := first;
end;
关于linked-list - 交换单链表中的两个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24214256/