两个有序链表的合并ptac语言
时间: 2025-06-15 16:22:20 浏览: 15
在Pascal/Turbo Pascal(简称PTAC)中,合并两个已排序的链表可以采用迭代或递归的方式实现。这里是一个基本的迭代解决方案:
```pascal
type
Node = record
data: Integer;
next: Pointer;
end;
function MergeSortedLists(list1, list2: Pointer): Pointer;
var
current1, current2: Pointer;
dummyNode: Node;
begin
// 创建一个虚拟头节点作为结果链表的起点
SetLength(dummyNode, 1);
dummyNode.next := nil;
current1 := list1;
current2 := list2;
// 持续遍历两个链表,将较小的数据添加到新链表并移动指针
while current1 <> nil and current2 <> nil do
begin
if current1^.data < current2^.data then
begin
dummyNode.next := current1;
current1 := current1^.next;
end
else
begin
dummyNode.next := current2;
current2 := current2^.next;
end;
end;
// 将未遍历完的链表余部(如果有的话)追加到结果链表尾部
if current1 <> nil then
dummyNode.next := current1
else
dummyNode.next := current2;
// 返回新的头结点
Result := dummyNode.next;
end;
```
在这个函数中,我们首先创建了一个虚拟头节点`dummyNode`,然后通过循环逐个比较两个链表当前节点的数据,选择较小的那个添加到结果链表中,并更新相应的指针。当其中一个链表遍历完毕,我们就将另一个链表剩余部分直接添加到结果链表的尾部。
阅读全文
相关推荐



















