链表的基础问题LeetCode第二题

链表链接和防止空链表

注:本人菜鸡一个,以后就在LeetCode刷刷题这里就随便写点刷题体会吧
链表以前还是写过的,但是不是特别清楚其中的一些实际操作,这次写问题 2. Add Two Numbers,就出现了点小麻烦。
1.leetcode报错:member access within null pointer of type ‘struct ListNode’
这是我在使用指针p作为存储二者相加的各位数字是刚开始的错误。这就是说我使用的指针p可能是个空指针。刚开始我是将p=result->next(result是我malloc过的),而且在循环是的判断也没有p!=NULL。

struct ListNode* result=(struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode* p=resul->next;
    int low_digit=0;
    int high_digit=0;
    while((l1!=NULL)&&(l2!=NULL))

后来将p=result,在循环判断中加上p!=NULL解决。

struct ListNode* result=(struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode* p=result;
    int low_digit=0;
    int high_digit=0;
    while((l1!=NULL)&&(l2!=NULL)&&p!=NULL)

2.在每次循环中都申请了malloc了p->next,但是在当结果的位数与二者最大的位数相等时结果会多一个0。
因为我申请之后p的最后val默认为0,当没有该位是还是将0赋值,应该直接为NULL,所以加上一个判断条件。在满足该条件时申请(多一个0),不满足时不申请直接返回即可。
旧代码:


        p->next=(struct ListNode*)malloc(sizeof(struct ListNode));
        p=p->next;

新代码:

if(high_digit==0&&l1->next==NULL&&l2->next==NULL){
            p->next=NULL;
            return result;
        }
        p->next=(struct ListNode*)malloc(sizeof(struct ListNode));
        p=p->next;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值