// 合并两个有序链表
// list1: 0,2,4,5
// list2: 1,3,4,6
// merge: 0,1,2,3,4,4,5,6
typedef struct ListNode{
int val;
struct ListNode* next;
}
struct ListNode* mergeTwoLists(struct ListNode* l1,struct ListNode* l2){
//创建新的链表接收
struct ListNode* l3,*t;
//开辟空间
l3 = (struct ListNode*)malloc(sizeof(struct ListNode));
//初始化
l3->next = NULL;
t = l3;
//如果两个链表都不为空,进行对比
while((l1 != NULL) && (l2 != NULL)){
if(l1->val < l2->val){
t->next = l1;
l1 = l1->next;
}else{
t->next = l2;
l2 = l2->next;
}
t = t->next;
}
//如果还有剩余的节点
if(l1){
t->next = l1;
}
if(l2){
t->next = l2;
}
struct ListNode* ret_ptr = l3->next;
free(l3);
return ret_ptr;
}
注意最后的释放空间,这是这段代码的精华