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; }
这个想法之前在学习数据结构的时候就想到过,只是基础知识不扎实所以写不出来,今天写出来的这个也是看了别人发的然后跟着练了一下而已。关于同类题目要多多总结,形成自己的方法
主要问题:
基础知识不扎实,声明链表节点的时候不会写。