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语言结构体指针