题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类 */ #include <stdlib.h> struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) { struct ListNode* cur1 = pHead1; struct ListNode* cur2 = pHead2; struct ListNode* p = malloc(sizeof(struct ListNode)); struct ListNode* head = p; if (pHead1 == NULL && pHead2 == NULL) return NULL; if (pHead1 == NULL && pHead2 != NULL) return pHead2; if (pHead1 != NULL && pHead2 == NULL) return pHead1; while (cur1 != NULL && cur2 != NULL) { // 当pHead1的值小于等于pHead2的值时 if (cur1->val <= cur2->val) { p->next = cur1; cur1 = cur1->next; p = p->next; if (cur1 == NULL) { p->next = cur2; } } // 当pHead1的值大于pHead2的值时 else { p->next = cur2; cur2 = cur2->next; p = p->next; if (cur2 == NULL) { p->next = cur1; } } } return head->next; }