题目:
思路:
创建一个新的空链表,因为原来的链表是有序的
所以只需要比较两个链表中的数据值,把较小的值放入新创建的链表中去
要考虑到两个合并链表长度不同的情况(如果第一个链表到尾了接下来直接把第二个链表的值直接放入到新创建的链表中就行,反之亦然)
代码:
struct ListNode* CreateNode(int val){
struct ListNode *temp=(struct ListNode *)malloc(sizeof(struct ListNode));
temp->val=val;
temp->next=NULL;
return temp;
}
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
struct ListNode *p1=list1;
struct ListNode *p2=list2;
struct ListNode *p=CreateNode(0);
struct ListNode *res=p;
while(p1!=NULL&&p2!=NULL){
if((p1->val)>(p2->val)){
p->next=CreateNode(p2->val);
p2=p2->next;
}
else {
p->next=CreateNode(p1->val);
p1=p1->next;
}
p=p->next;
}
while(p1!=NULL) {
p->next=CreateNode(p1->val);
p1=p1->next;
p=p->next;
}
while(p2!=NULL){
p->next=CreateNode(p2->val);
p2=p2->next;
p=p->next;
}
return res->next;
}
反思:
合理使用虚拟头节点
还有拼写(ListNode--->写成ListNdeo)