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->val<l2->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入门
应急手机号使用人为天津 龙腾开锁服务部员工孙硕密保问题重置-其他问题之前已经成功解析在什么都没动的情况下又不行了零基础可以学seo吗?学seo具备什么知识?最近网页打开很缓慢最新发表的文章电脑中记事本保存的文本文档显示乱码的解决办法“喵呜”双拼域名miaowu.com以10万元被秒门户云盘服务器硬盘有多大