题解 | #JZ25 合并两个排序的链表#

合并两个排序的链表

https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
  public:
    // void ListInsert(ListNode** Head, ListNode* insert_node) {
    //     ListNode* Node = *Head;
    //     insert_node->next = Node->next;
    //     Node->next = insert_node;
	// 	*Head = insert_node->next;
    // }
	void Listpushback(ListNode** Head,int x){
		ListNode* Node = new ListNode(x);
		if (*Head ==NULL){
			*Head = Node;
		}
		else{
			ListNode* p = *Head;
			while(p->next!=NULL){
				p = p->next;
				// cout<<p->val<<'+';
			}
			p->next = Node;
		}
	
	}
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        // ListNode* small;
        // ListNode* large;
		ListNode* result = NULL;
        if (pHead1 == NULL) {
            return pHead2;
        } else if (pHead2 == NULL) {
            return pHead1;
        } else {
            // if (pHead1 -> val <= pHead2 -> val) {
            //     small = pHead1;
            //     large = pHead2;
            // } else {
            //     small = pHead2;
            //     large = pHead1;
            // }
            // ListNode* temp_p = small;
            while (pHead1 != NULL && pHead2 != NULL) {
                if(pHead1->val<=pHead2->val){
					Listpushback(&result, pHead1->val);
					// cout<<pHead1->val<<' ';
					pHead1 = pHead1->next;
					
				}
				else{
					Listpushback(&result, pHead2->val);
					// cout<<pHead2->val<<' ';
					pHead2 = pHead2->next;

				}
            }
			if(pHead1  ==NULL){
				while(pHead2 !=NULL){
					Listpushback(&result, pHead2->val);
					pHead2 = pHead2->next;
				}
			
				
			}
			else{
				while(pHead1 !=NULL){
					Listpushback(&result, pHead1->val);
					pHead1 = pHead1->next;
				}
			}
			return result;

        }

    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务