LeetCode题组:第21题-合并两个有序链表

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

猜你喜欢

转载自blog.csdn.net/qq_38251616/article/details/105362034