两个有序链表序列的并集C语言
时间: 2024-12-10 18:44:29 浏览: 12
在C语言中,合并两个已排序的链表形成一个新的链表,并集是指每个元素只出现一次。你可以通过创建一个新的头节点,并依次遍历两个输入链表,将较小的元素添加到新链表中,同时更新当前较小元素的指针。如果遇到相同的元素,则从第一个链表继续取值,直到两者遍历完毕。
这是一个简单的步骤描述:
1. 创建一个新链表,初始节点设为`NULL`,并设置两个指针分别指向两个输入链表的头部。
2. 比较当前指针所指向的节点值,将较小的那个节点添加到新链表中,并更新新链表的下一个节点。
3. 如果当前节点值相等,优先处理第一个链表,因为我们需要去除重复元素。
4. 当两个链表都遍历完时,检查新链表的最后一个节点是否还有后续节点,如果没有,说明新链表就是最终结果。
下面是一个示例函数实现:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* mergeSortedLists(Node* list1, Node* list2) {
if (list1 == NULL) return list2;
if (list2 == NULL) return list1;
if (list1->data < list2->data) {
list1->next = mergeSortedLists(list1->next, list2);
return list1;
} else {
list2->next = mergeSortedLists(list1, list2->next);
return list2;
}
}
```
阅读全文