/* 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; } if(pHead2 == NULL){ return pHead1; } //加一个表头 ListNode *head = new ListNode(0); ListNode *cur = head; //当两个链表都不为空 while(pHead1 && pHead2){ //思想是重复操作将当前最小的值放入 head中,最后return head->next 因为地一个是0 if(pHead1->val <= pHead2->val){ //将val值较小地址放在cur里 cur ->next =pHead1; pHead1 = pHead1->next; //并将该phead 更新到下一个地址 } else{ cur->next =pHead2; pHead2 =pHead2->next; } cur = cur->next; } if(pHead1){ cur->next = pHead1; } else{ cur->next =pHead2; } return head ->next; } };