合并链表

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    queue<int> q;
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if(pHead1 == NULL && pHead2 == NULL){
            return NULL;
        }
        while(true){
            if(pHead1 == NULL && pHead2 == NULL){
                break;
            }else if(pHead1 != NULL && pHead2 == NULL){
                q.push(pHead1->val);
                pHead1 = pHead1->next;
            }else if(pHead1 == NULL && pHead2 != NULL){
                q.push(pHead2->val);
                pHead2 = pHead2->next;
            }else{
                if(pHead1->val<=pHead2->val){
                    q.push(pHead1->val);
                    pHead1 = pHead1->next;
                }else{
                    q.push(pHead2->val);
                    pHead2 = pHead2->next;
                }
            }
        }
        ListNode* head = (ListNode*)malloc(sizeof(ListNode));
        ListNode* p = head;
        while(!q.empty()){
            p->val = q.front();
            q.pop();
            if(q.empty()){        //没有提前跳出循环,会导致最后多出一个0
                break;
            }
            p->next = (ListNode*)malloc(sizeof(ListNode));
            p = p->next;
        }
        //p = NULL;
        return head;
    }
};

 

posted @ 2019-04-25 12:17  萌新上路  阅读(125)  评论(0编辑  收藏  举报