/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类 */ #include <stdio.h> struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) { // write code here if(pHead1 == NULL)//如果表1为空 { return pHead2; } if(pHead2 == NULL)//表2为空 { return pHead1; } struct ListNode* pHead = pHead1;//这个是合并表 if (pHead1->val <= pHead2->val)//两个链表中的第一个数据比较,也就是pHead的第一个数据 { pHead1 = pHead1->next; } else { pHead = pHead2; pHead2 = pHead2->next; } struct ListNode* pCurrent = pHead;//遍历使用 while(pHead1 != NULL && pHead2 != NULL){ if(pHead1->val <= pHead2->val){//如果表1中的数据小于表2 pCurrent->next = pHead1; pHead1 = pHead1->next; } else{//表1数据大于表2 pCurrent->next = pHead2; pHead2 = pHead2->next; } pCurrent = pCurrent->next;//继续向后遍历 } //最后一个元素的判断 if(pHead1){ pCurrent->next = pHead1; } if(pHead2){ pCurrent->next = pHead2; } return pHead;//返回合并表 }