用c语言写两个有序链表序列的合并
时间: 2024-06-13 07:03:36 浏览: 116
c++ 如何合并两个有序链表
可以使用指针来遍历两个链表,比较节点的大小,将较小的节点加入新的链表中。具体步骤如下:
1.定义一个新的链表S3,以及三个指针p1、p2、p3,分别指向链表S1、S2、S3的头节点。
2.比较p1和p2所指向节点的大小,将较小的节点加入S3中,并将p1或p2指向下一个节点。
3.重复步骤2,直到p1或p2指向NULL。
4.将p1或p2剩余的节点加入S3中。
5.返回S3。
下面是C语言代码实现:
```
List Merge(List L1, List L2) {
List S3 = (List)malloc(sizeof(struct Node)); // 创建新链表S3
S3->Next = NULL;
PtrToNode p1 = L1->Next, p2 = L2->Next, p3 = S3; // 分别指向L1、L2、S3的头节点
while (p1 && p2) { // 比较p1和p2所指向节点的大小,将较小的节点加入S3中
if (p1->Data <= p2->Data) {
p3->Next = p1; p1 = p1->Next;
} else {
p3->Next = p2;
p2 = p2->Next;
}
p3 = p3->Next;
}
p3->Next = p1 ? p1 : p2; // 将p1或p2剩余的节点加入S3中
return S3;
}
```
阅读全文