您的位置:首页 > 编程语言 > C语言/C++

LeetCode 第二题两数相加 C语言

2018-12-14 21:59 387 查看

 

代码

[code]/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{
int Sum = 0,Carry = 0;
struct ListNode *PL1 = l1,*PL2 = l2;
struct ListNode *NewHead,*P1,*P2;
int Tem1 = l1->val,Tem2 = l2->val;

NewHead = (struct ListNode *)malloc(sizeof (struct ListNode));

P1= NewHead;

P2 = P1;

while((PL1 != NULL) || (PL2 != NULL) || Carry != 0)
{
Sum = Tem1 + Tem2 + Carry;

if(Sum >= 10)
Carry = 1;
else
Carry = 0;

P2->val = Sum % 10;

P1 = (struct ListNode *)malloc(sizeof (struct ListNode));

P2->next = P1;

P2 = P1;

if(PL1 == NULL)
{
Tem1 = 0;

}
else
{

PL1 = PL1->next;

if(PL1 != NULL)
Tem1 = PL1->val;
else
Tem1 = 0;

}
if(PL2 == NULL)
{

Tem2 = 0;

}
else
{
PL2 = PL2->next;

if(PL2 != NULL)
Tem2 = PL2->val;
else
Tem2 = 0;

}
}

P1->next = NULL;

P1= NewHead;

while(P1->next->next != NULL)
{

P1 = P1->next;

}

P2 = P1->next;

free(P2);

P1->next = P1->next->next;

return NewHead;

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: