每周一道算法题(十七)

作者: CrazySteven | 来源:发表于2017-07-09 22:36 被阅读524次

    本周由于公司周年庆,组织活动出去玩,所以写的有点晚了。言归正转,题目难度"Easy"

    题目:将两个从小到大排列的有序链表(可以为空)合并成一个从小到大排列的有序链表。

    思路:既然人家都给你把链表排列好了,那你只要比个大小就行了,很简单,直接看代码:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
        //排除空链表
        if (l1 == NULL || l2 == NULL) {
            if (l1 == NULL) return l2;
            else return l1;
        }
        //创建一个链表的头部
        struct ListNode* head,*temp;
        if (l1->val > l2->val) {
            head = l2;
            l2 = l2->next;
        }else {
            head = l1;
            l1 = l1->next;
        }
        temp = head;
        //遍历链表
        while (l1 != NULL || l2 != NULL) {
            //解决空链表的问题
            if(l1 == NULL || l2 == NULL) {  
                if(l1 == NULL) {
                    temp->next = l2;
                    l2 = l2->next;
                }else {
                    temp->next = l1;
                    l1 = l1->next;
                }
            //比较链表数值大小
            }else if (l1->val > l2->val) {
                temp->next = l2;
                l2 = l2->next;
            }else {
                temp->next = l1;
                l1 = l1->next;
            }
            temp = temp->next;
        }
        return head;
    }
    

    下周见〜〜

    版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

    相关文章

      网友评论

        本文标题:每周一道算法题(十七)

        本文链接:https://www.haomeiwen.com/subject/pvvehxtx.html