linked-list - 交换单链表中的两个节点

标签 linked-list pascal

如何在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/

相关文章:

embedded - 为嵌入式系统编译Pascal代码(AT89C51RC2)

java - 链表插入使用头部插入

c - 在链表错误中用字符串替换字符?

c++ - 这里使用 "delete"真的会删除对象吗?

c++ - 编写 bool 表达式来判断列表是否在增加

pascal - 有没有办法确定对对象过程的引用是否对应于 Pascal 中的对象实例?

PascalScript 中的 JSON 解析器

java - 以 O(1) 空间复杂度对 O(n log n) 中的链表进行排序

go - delphi/pascal <> golang (异或加密)

macros - Pascal 中是否有相当于 C 的 __LINE__ 宏?