MergeListo:将两个升序单循环链表La和Lb合并成一个新的升序单 循环链表Lc升输出显示(相同元素只留一个1 2 3 4 5 6 7 8 9 10):的c语言代码
时间: 2024-09-23 14:06:47 浏览: 54
链表_链表_用链表将两个数组升序合并到另一个数组_
在C语言中,合并两个升序的单循环链表可以使用迭代的方式实现,步骤包括创建新链表、比较节点值并插入到新链表中。假设链表节点结构如下:
```c
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
```
下面是一个示例函数`MergeTwoLists`来完成这个任务:
```c
ListNode* MergeTwoLists(ListNode* La, ListNode* Lb) {
// 新链表的头结点初始化为NULL
ListNode* Lc = NULL;
// 当有一个链表非空时继续操作
while (La && Lb) {
if (La->val < Lb->val) {
// 如果La较小,将其添加到新链表
if (!Lc) {
Lc = La;
} else {
Lc->next = La;
Lc = Lc->next;
}
La = La->next;
} else {
// 否则,如果Lb较小
if (!Lc) {
Lc = Lb;
} else {
Lc->next = Lb;
Lc = Lc->next;
}
Lb = Lb->next;
}
}
// 将剩余未处理的链表连接到新链表
if (La) {
Lc->next = La;
} else {
Lc->next = Lb;
}
return Lc;
}
```
为了将结果打印出来,你可以遍历新链表并输出每个节点的值。例如:
```c
void PrintList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->val);
temp = temp->next;
}
printf("\n");
}
// 调用合并和打印
ListNode* mergedList = MergeTwoLists(La, Lb);
PrintList(mergedList);
```
阅读全文