C语言怎么合并两个有序链表
导读:收集整理的这篇文章主要介绍了C语言怎么合并两个有序链表,觉得挺不错的,现在分享给大家,也给大家做个参考。c语言合并两个有序链表的方法:拼接指定的两个有序链表的所有节点即可。例如两个有序链表分别为【1->2->4】和【1->...
收集整理的这篇文章主要介绍了C语言怎么合并两个有序链表,觉得挺不错的,现在分享给大家,也给大家做个参考。c语言合并两个有序链表的方法:拼接指定的两个有序链表的所有节点即可。例如两个有序链表分别为【1-> 2-> 4】和【1-> 3-> 4】,合并后的有序链表为【1-> 1-> 2-> 3-> 4-> 4】。
具体方法:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
(视频教程推荐:java课程)
输入:
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->
vall2->
val){
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;
}
图文教程分享:java入门
以上就是C语言怎么合并两个有序链表的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C语言怎么合并两个有序链表
本文地址: https://pptw.com/jishu/594736.html
