#include <iostream>#include <stdio.h>#include <malloc.h>using namespace std;struct ListNode{ int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution{public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1 == NULL) return pHead2; else if(pHead2 == NULL) return pHead1; ListNode * res = NULL; ListNode * tmp = NULL; while(pHead1 && pHead2) { if(pHead1->val > pHead2->val) { if(res == NULL) res = tmp = pHead2; else { res->next = pHead2; res = res->next; } pHead2 = pHead2->next; } else { if(res == NULL) res = tmp = pHead1; else { res->next = pHead1; res = res->next; } pHead1 = pHead1->next; } } if(pHead1 == NULL) res->next = pHead2; if(pHead2 == NULL) res->next = pHead1; return tmp; }};int main(){ int i;ListNode * p = (ListNode*)malloc(sizeof(ListNode));p->val = 1;p->next = NULL;ListNode * p1 = p;ListNode * q = (ListNode*)malloc(sizeof(ListNode));q->val = 1;q->next = NULL;ListNode * q1 = q;for(i = 2; i < 5; i++){p->next = (ListNode*)malloc(sizeof(ListNode));p = p->next;p->val = i;p->next = NULL;q->next = (ListNode*)malloc(sizeof(ListNode));q = q->next;q->val = i;q->next = NULL;}Solution s;ListNode * node = s.Merge(p1, q1);while(node){ cout << node->val << " "; node = node->next;} return 0;}