两个有序链表的合并pta,C语言
时间: 2024-11-13 11:27:54 浏览: 10
两个有序链表的合并通常是线性数据结构题目中的经典问题,尤其是在参加像LeetCode或者其他在线编程挑战平台(如Pascal's Triangle II - LeetCode PTA)时。在C语言中,你可以通过比较节点值并保持原有顺序来合并这两个链表。以下是一个简单的算法描述:
1. 创建一个新的头结点`head`,用于存储合并后的结果。
2. 比较当前两个链表的头节点,选择较小的那个作为新链表的下一个节点,并将其指向原来链表的下一个节点。
3. 如果其中一个链表遍历完,将另一个链表剩余部分添加到新链表的末尾。
下面是伪代码示例:
```c
Node* mergeTwoLists(Node* l1, Node* l2) {
if (l1 == NULL) return l2;
if (l2 == NULL) return l1;
// 将较小的节点指向下个节点
if (l1->val < l2->val) {
l1->next = mergeTwoLists(l1->next, l2);
return l1;
} else {
l2->next = mergeTwoLists(l1, l2->next);
return l2;
}
}
```
其中,`Node`代表链表的节点结构,包含`val`表示节点值,`next`指向下个节点。
阅读全文