如何用C语言实现两个有序链表的合并操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计395个文字,预计阅读时间需要2分钟。
本章节通过代码示例介绍如何使用C语言合并两个有序链表。以下是一个简化的示例:
c#include #include
// 定义链表节点结构体struct ListNode { int val; struct ListNode *next;};
// 合并两个有序链表struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { // 创建一个哑节点作为合并后链表的头部 struct ListNode dummy; struct ListNode *current=&dummy;
// 遍历两个链表,合并节点 while (l1 && l2) { if (l1->val val) { current->next=l1; l1=l1->next; } else { current->next=l2; l2=l2->next; } current=current->next; }
// 将剩余的链表节点连接到合并后的链表 current->next=l1 ? l1 : l2;
// 返回合并后的链表的头节点(哑节点的下一个节点) return dummy.next;}
// 打印链表void printList(struct ListNode* node) { while (node !=NULL) { printf(%d , node->val); node=node->next; } printf(\n);}
int main() { // 创建两个有序链表 struct ListNode l1={1, NULL}; l1.next=(struct ListNode){2, NULL}; l1.next->next=(struct ListNode){4, NULL};
struct ListNode l2={1, NULL}; l2.next=(struct ListNode){3, NULL}; l2.next->next=(struct ListNode){4, NULL};
// 合并链表 struct ListNode* mergedList=mergeTwoLists(&l1, &l2);
// 打印合并后的链表 printList(mergedList);
return 0;}
以上代码展示了如何合并两个有序链表,并且不使用任何外部库。如有需要,可以参考相关C语言链表操作教程或参考代码。希望对您有所帮助。
本篇文章通过代码示例介绍一下使用c语言合并两个有序链表的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。教程
本文共计395个文字,预计阅读时间需要2分钟。
本章节通过代码示例介绍如何使用C语言合并两个有序链表。以下是一个简化的示例:
c#include #include
// 定义链表节点结构体struct ListNode { int val; struct ListNode *next;};
// 合并两个有序链表struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { // 创建一个哑节点作为合并后链表的头部 struct ListNode dummy; struct ListNode *current=&dummy;
// 遍历两个链表,合并节点 while (l1 && l2) { if (l1->val val) { current->next=l1; l1=l1->next; } else { current->next=l2; l2=l2->next; } current=current->next; }
// 将剩余的链表节点连接到合并后的链表 current->next=l1 ? l1 : l2;
// 返回合并后的链表的头节点(哑节点的下一个节点) return dummy.next;}
// 打印链表void printList(struct ListNode* node) { while (node !=NULL) { printf(%d , node->val); node=node->next; } printf(\n);}
int main() { // 创建两个有序链表 struct ListNode l1={1, NULL}; l1.next=(struct ListNode){2, NULL}; l1.next->next=(struct ListNode){4, NULL};
struct ListNode l2={1, NULL}; l2.next=(struct ListNode){3, NULL}; l2.next->next=(struct ListNode){4, NULL};
// 合并链表 struct ListNode* mergedList=mergeTwoLists(&l1, &l2);
// 打印合并后的链表 printList(mergedList);
return 0;}
以上代码展示了如何合并两个有序链表,并且不使用任何外部库。如有需要,可以参考相关C语言链表操作教程或参考代码。希望对您有所帮助。
本篇文章通过代码示例介绍一下使用c语言合并两个有序链表的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。教程

