LeetCode 打卡第一天 (两数相加和)

两数相加和

利用链表实现两个数相加:链表每个节点对应一位数。

需要考虑存在位数不相同时出现的可能性:

 if(NULL==l1->next){

                temp->next->val = (sum_temp + l2->next->val)%10;

                sum_temp = (sum_temp + l2->next->val)/10;

                l2=l2->next;

            }

            else if(NULL==l2->next){

                temp->next->val = (sum_temp + l1->next->val)%10;

                sum_temp = (sum_temp + l1->next->val)/10;

                l1=l1->next;

            }

            else{

                temp->next->val = (sum_temp + l1->next->val + l2->next->val)%10;

                sum_temp = (sum_temp + l1->next->val + l2->next->val)/10;

                l1=l1->next;l2=l2->next;

            }

 

提交过程中出现的BUG:

选用malloc函数申请空间创建链表节点,返回时提示 <memory cannot be printed>。

更改为new函数申请空间程序正确运行。

 

BUG初分析:malloc函数调用需要包含头文件<stdlib.h>,测试函数中可能不函数

1. new直接写在类型t的前面,是c++中的一个操作符,且直接分配指定类型大小的内存空间。而malloc是c中的一个函数,且需要借助于函数sizeof帮其判断类型的大小所需的内存空间;

2. new直接返回该类型的指针,而且会调用类中的构造函数。而malloc返回一个void指针,需要在前面对其强制定义为该类型的指针,不用调用构造函数;

3. new与delete搭配使用,delete会调用类中的析构函数对内存进行释放。malloc则与free搭配,不调用析构函数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值