/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode* p=pHead1,*q=pHead2; //创建一个虚拟头结点 ListNode* Head=new ListNode(0); Head->next=NULL; //创建尾指针尾插 ListNode* tail=Head; while(p&&q) { ListNode* t=NULL;//临时存储p/q的后继 if(p->val<=q->val) { t=p->next; p->next=tail->next; tail->next=p; tail=p; p=t; } else { t=q->next; q->next=tail->next; tail->next=q; tail=q; q=t; } } //处理还有剩余的 if(q) p=q; tail->next=p; return Head->next; } };