題目
將兩個(gè)升序鏈表合并為一個(gè)新的升序鏈表并返回。新鏈表是通過(guò)拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。?
鏈接:21. 合并兩個(gè)有序鏈表 - 力扣(LeetCode)
題解
設(shè)置兩個(gè)指針head和tail,head用來(lái)指向新鏈表的頭結(jié)點(diǎn),tail用來(lái)進(jìn)行新鏈表的尾插。比較兩個(gè)鏈表,取較小的結(jié)點(diǎn)進(jìn)行尾插。
注意,當(dāng)有一個(gè)鏈表為空時(shí),直接返回另一個(gè)非空鏈表;當(dāng)有一個(gè)鏈表先為空時(shí),tail直接指向非空鏈表,合并結(jié)束,返回head。
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-563527.html
?代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-563527.html
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) { struct ListNode* head = NULL; struct ListNode* tail = NULL; if (list1 == NULL) return list2; if (list2 == NULL) return list1; while (list1 && list2) { if (list1->val <= list2->val) { if (tail == NULL) head = tail = list1; else { tail->next = list1; tail = tail->next; } list1 = list1->next; } else { if (tail == NULL) head = tail = list2; else { tail->next = list2; tail = tail->next; } list2 = list2->next; } } if (list1) tail->next = list1; if (list2) tail->next = list2; return head; }
到了這里,關(guān)于力扣21. 合并兩個(gè)有序鏈表的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!