LeetCode #2 两数相加
本文章是对LeetCode #2 两数相加的经验总结。
题目如下:
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例:
输入:
[2,4,3]
[5,6,4]
输出:[7,0,8]
原因:342 + 465 = 807
第一次 失败的尝试
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode LinkList;
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{
int tmp, carry, l1val = l1->val, l2val = l2->val;
LinkList *p, *pre, *l3 = NULL;
while (1)
{
p = (LinkList*)malloc(sizeof(LinkList));
if (l3 == NULL)
{
l3 = p;
pre = p