这篇文章主要介绍C语言怎样合并两个有序链表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

十载的富蕴网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整富蕴建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“富蕴网站设计”,“富蕴网站推广”以来,每个客户项目都认真落实执行。
C语言合并两个有序链表的方法:拼接指定的两个有序链表的所有节点即可。例如两个有序链表分别为【1->2->4】和【1->3->4】,合并后的有序链表为【1->1->2->3->4->4】。
具体方法:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
输入:
1->2->4, 1->3->4
输出:
1->1->2->3->4->4
分析:两个链表为有序链表,所以依次遍历两个链表比较大小即可。
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
if(l1==NULL){
return l2;
}
if(l2==NULL){
return l1;
}
struct ListNode *l = (struct ListNode*)malloc(sizeof(struct ListNode));
l->next = NULL;
struct ListNode *list1 = l1;
struct ListNode *list2 = l2;
if(l1->valval){
l->val=l1->val;
if(list1->next==NULL){
l->next=list2;
return l;
}
list1=list1->next;
}else{
l->val=l2->val;
if(list2->next==NULL){
l->next=list1;
return l;
}
list2=list2->next;
}
struct ListNode *list = l;
while(list1->next!=NULL&&list2->next!=NULL){
if(list1->val<=list2->val){
struct ListNode *body = (struct ListNode *)malloc(sizeof(struct ListNode));
body->val = list1->val;
body->next = NULL;
list->next = body;
list = list->next;
list1 = list1->next;
}else{
struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));
body->val=list2->val;
body->next=NULL;
list->next=body;
list=list->next;
list2=list2->next;
}
}
if(list1->next==NULL){
while(list2->next!=NULL){
if(list1->val<=list2->val){
list->next = list1;
list = list->next;
list->next=list2;
return l;
}else{
struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));
body->val=list2->val;
body->next=NULL;
list->next=body;
list=list->next;
list2=list2->next;
}
}
}else{
while(list1->next!=NULL){
if(list2->val<=list1->val){
list->next=list2;
list=list->next;
list->next=list1;
return l;
}else{
struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));
body->val=list1->val;
body->next=NULL;
list->next=body;
list=list->next;
list1=list1->next;
}
}
}
if(list1->next==NULL&&list2->next==NULL){
if(list1->val<=list2->val){
list->next = list1;
list=list->next;
list->next=list2;
}else{
list->next=list2;
list=list->next;
list->next=list1;
}
}
return l;
} 以上是C语言怎样合并两个有序链表的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!