两数相加和
利用链表实现两个数相加:链表每个节点对应一位数。
需要考虑存在位数不相同时出现的可能性:
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搭配,不调用析构函数。