我们新建一个链表,然后每次存入的时候比较一下两个链表元素的大小,把小的存进去就好了。但是需要注意两个问题:
1、正确的初始化链表。他并没给你初始化链表的函数,所以你得手动初始化。让这个节点的下一个节点为NULL,这个节点存的值为0(这个一定要写,他不是默认为0).
2、第二个就是注意不要访问野指针。当然我在这写的时候过度小心了,实际上解引用我们的链表最后一个节点指向一个NULL并没有问题,但是说你解引用的就是个NULL,然后你下一个节点是野指针,那就不行了。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
struct ListNode* new;
new=(struct ListNode*)malloc(sizeof(struct ListNode));
new->next=NULL;
new->val=0;
struct ListNode* p=new;
while(list1&&list2)
{
if(list1->val<list2->val)
{
new->next=list1;
list1=list1->next;
}
else
{new->next=list2;
list2=list2->next;}
new=new->next;
}
//new->next=list1;new=new->next;new->next=list2;
while(list2)
{new->next=list2;
break;}
while(list1)
{ new->next=list1;
break;}
list1=p->next;
return list1;
}
好了,今天的内容就分享到这,我们下期再见!
因篇幅问题不能全部显示,请点此查看更多更全内容