leetcode21之答疑
2023-12-25 19:25:17
21. 合并两个有序链表(注意:他为两个有序链表!!)
已解答
简单
相关标签
相关企业
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = [] 输出:[]
示例 3:
输入:l1 = [], l2 = [0] 输出:[0]
提示:
-
两个链表的节点数目范围是
[0, 50]
-
-100 <= Node.val <= 100
-
l1
和l2
均按 非递减顺序 排列struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) { ? struct ListNode head; ? struct ListNode *tail=&head;//tail结构体指针指向head; ? head.next=NULL; ? while(list1!=NULL&&list2!=NULL) ? { ? ? ? if(list1->val<=list2->val)//谁给了tail,谁就应该向后移一位 ? ? ? { ? ? ? ? ? tail->next=list1; ? ? ? ? ? list1=list1->next; ? ? ? } ? ? ? else ? ? ? { ? ? ? ? ? tail->next=list2; ? ? ? ? ? list2=list2->next; ? ? ? } ? ? ? tail=tail->next;//tail此时已存储,应向后移一位 ? } ? if(list1!=NULL)//用到了他是两个有序链表,若一个已经比较完,那剩下另一个没比较完就跟在tail后面就行了 ? tail->next=list1; ? else ? tail->next=list2; ? return head.next;//因头什么都没放(tail指向head,而是从tail->next开始存数据的),因此是head.next }
-
举个例子(字有点丑,凑活着看)
~~虽然我走得很慢,但绝不停止前行的脚步!加油!
文章来源:https://blog.csdn.net/2301_80105928/article/details/135171779
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!