返回信息流/*
下面这段是关于链表的 在内存中查看就是正确的,但是打印出来就是出现中断错误 不知道为什么
是实现两个链表进位相加
You are given two non-empty linked lists representing two non-negative integers.
The digits are stored in reverse order and each of their nodes contain a single digit.
Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8[em1]
*/
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *test;
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
int extra = 0;
ListNode re(0), *p = &re, *pd = p;
int sum = 0;
while (l1 || l2 || extra)
{
sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + extra;
extra = sum / 10;
p->val = sum % 10;
if (l1->next || l2->next || extra)
{
p->next = new ListNode(0);
p = p->next;
}
else
p->next = NULL;
l1 = l1 ? l1->next : l1;
l2 = l2 ? l2->next : l2;
}
return &re;
}
int main()
{
ListNode aa(0), *p = &aa, *pa = &aa;
p->val = 2;
p->next = new ListNode(0);
p = p->next;
p->val = 4;
p->next = new ListNode(0);
p = p->next;
p->val = 3;
p->next = NULL;
ListNode bb(0), *pb = &bb;
p = &bb;
p->val = 5;
p->next = new ListNode(0);
p = p->next;
p->val = 6;
p->next = new ListNode(0);
p = p->next;
p->val = 4;
p->next = NULL;
ListNode *ru;
ru = addTwoNumbers(pa, pb);
//ru = &aa;
while (ru->next)
{
int m = ru->val;
printf("%d", m);
ru = ru->next;
}
printf("%d", ru->val);
while (1);
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #95855同步于 2017/7/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求教 关于LeetCode上的一个简单链表问题
wenkang529
2017/7/26镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
你那个 add 的方法返回的链表指针在打印的时候已经过了生命周期被收回了。还有你这份程序有内存泄漏啊,有 new 没有 delete ,楼主建议你要么用构造和析构管理好内存,要么用智能指针。