合并两个有序链表(力扣刷题,c语言版)
砂糖dd:
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
if (list1 == NULL) {
return list2;
}
if (list2 == NULL) {
return list1;
}
//让list1 和list2 就存原来的地址,p1和p2来变
struct ListNode* p1 = list1;
struct ListNode* p2 = list2;
struct ListNode * start = malloc(sizeof(struct ListNode) * 1);//start将来要返回的头地址
struct ListNode* p = start;
while (p1 && p2) {
if (p1->val <= p2->val) {
p->val = p1->val;
p1 = p1->next;
}
else {
p->val = p2->val;
p2 = p2->next;
}
if (p1 && p2) {
p->next = malloc(sizeof(struct ListNode) * 1);
p = p->next;
}
}
if (p1 == NULL) {
p->next = p2;
}
if (p2 == NULL) {
p->next = p1;
}
return start;
}
砂糖dd:
代码放下面了,大家刚开始做,可以参考一下