我是靠谱客的博主 会撒娇手链,最近开发中收集的这篇文章主要介绍LeetCode第2题:Add Two Numbers,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

问题描述:给定两个非空的链表,表示两个非负整数。 数字以相反的顺序存储,每个节点包含一个数字。 添加两个数字并将其作为链表返回。

测试代码:

 

#include <iostream>
using namespace std;
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL){}
};
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
ListNode l3(0);
ListNode *preNode = &l3;
int addNumber = 0;
ListNode *b1 = l1, *b2 = l2;
while(b1!=NULL || b2!=NULL || addNumber>0)//当l1和l2不为空或者addNumber>0任意一个条件成立
{
ListNode *node = new ListNode(0);//临时的结构体指针
int val1 = b1 ? b1->val : 0;//如果b1不为空,val1=b1->val,否则为空
int val2 = b2 ? b2->val : 0;//如果b2不为空,val2=b2->val,否则为空
b1 = b1 ? b1->next : NULL;//如果b1不为空,b1指向下一个链表节点,否则为空
b2 = b2 ? b2->next: NULL;//如果b1不为空,b1指向下一个链表节点,否则为空
node->val = (val1 + val2 + addNumber) % 10;
addNumber = (val1 + val2 + addNumber) / 10;
preNode->next = node;
preNode = node;
}
return l3.next;
}
};
int main()
{
ListNode * ln1_1 = new ListNode(2);
ListNode * ln1_2 = new ListNode(4);
ListNode * ln1_3 = new ListNode(3);
ln1_1->next=ln1_2;
ln1_2->next=ln1_3;
ListNode * ln2_1 = new ListNode(5);
ListNode * ln2_2 = new ListNode(6);
ListNode * ln2_3 = new ListNode(4);
ln2_1->next=ln2_2;
ln2_2->next=ln2_3;
Solution s;
ListNode *l3=s.addTwoNumbers(ln1_1,ln2_1);
while (l3!=NULL)
{
cout<<l3->val<<" ";
l3=l3->next;
}
return 0;
}


如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com,更多博文干货等着您。

最后

以上就是会撒娇手链为你收集整理的LeetCode第2题:Add Two Numbers的全部内容,希望文章能够帮你解决LeetCode第2题:Add Two Numbers所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部