1.题目:合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
2.我的解答
struct ListNode{ int val; struct ListNode *next; }; struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ struct ListNode* tmp; //1号标记点 struct ListNode header; //1号标记点 header.next=l1; l1=&header; while(l2!=0){ while(l1->next!=0&&l1->next->val<l2->val) l1=l1->next; tmp=l2; l2=l2->next; tmp->next=l1->next; l1->next=tmp; } return header.next; }
3.难点
1号标记点处,关于结构体指针的一些问题。下面两行语句的区别
struct ListNode* tmp; struct ListNode header;
可以查看我的博客:C语言结构体指针
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句