Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!
我的博客:<但凡.
我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》
欢迎点赞,关注!
1、题目
2、题解
我们新建一个链表,然后每次存入的时候比较一下两个链表元素的大小,把小的存进去就好了。但是需要注意两个问题:
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;
}
好了,今天的内容就分享到这,我们下期再见!