码迷,mamicode.com
首页 > 其他好文 > 详细

Merge Two Sorted Lists

时间:2015-03-13 22:04:13      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

两个指针的做法,但比起2个数组有序的数组的话,链表做更容易,因为当一个链表遍历结束后,tail指针并不需要遍历另一个链表,只要直接指向它就行

 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *mergeTwoLists(struct ListNode *l1, struct ListNode *l2) {
    struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *tail = head;
    while(l1&&l2){
        if(l1->val<l2->val){
            tail->next = l1;
            l1 = l1->next;
        }else {
            tail->next = l2;
            l2 = l2->next;
        }
        tail = tail->next;
    }
    //很傻比的后面全部遍历一遍
    while(l1){
        tail->next = l1;
        l1 = l1->next;
        tail = tail->next;
    }
    while(l2){
        tail->next = l2;
        l2 = l2->next;
        tail = tail->next;
    }
    return head->next;
}
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *mergeTwoLists(struct ListNode *l1, struct ListNode *l2) {
    struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *tail = head;
    while(l1&&l2){
        if(l1->val<l2->val){
            tail->next = l1;
            l1 = l1->next;
        }else {
            tail->next = l2;
            l2 = l2->next;
        }
        tail = tail->next;
    }
    if(!l1)tail->next = l2;
    else if(!l2) tail->next = l1;
    return head->next;
}

 

Merge Two Sorted Lists

标签:

原文地址:http://www.cnblogs.com/llei1573/p/4335972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!