21合并两个有序链表

目前我能想到的是最笨的办法,能以后想到更好的方法的时候在来继续做把

题目描述:

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

 

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

遇到的错误:

 

 

 解决方法,把以下两句原本用分号连接的语句改为用逗号连接,错误得到解决

错误原因分析:

逗号前后两句话原本是用分号连接的,如果改成逗号错误就消失了。说明这两句话的关系是并列的,result为新申明的节点,将t指向result,避免result成为野指针。

struct ListNode *result =(struct ListNode *)malloc(sizeof(struct ListNode));
*t=result;

  最后显示通过

 

 代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
if(!l1)
   return l2;
else if(!l2)
    return l1;
struct ListNode *result =(struct ListNode *)malloc(sizeof(struct ListNode)),*t=result;
while(l1&&l2)
{
    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;
else if(l2)
    t->next=l2;

return result->next;


}

  这个想法之前在学习数据结构的时候就想到过,只是基础知识不扎实所以写不出来,今天写出来的这个也是看了别人发的然后跟着练了一下而已。关于同类题目要多多总结,形成自己的方法

主要问题:

基础知识不扎实,声明链表节点的时候不会写。

posted @ 2020-07-09 21:23  进寸欢喜  阅读(140)  评论(0编辑  收藏  举报