码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_2_Add Two Numbers

时间:2015-02-14 17:35:31      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:c++   leetcode   linked_list   

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢技术分享


Add Two Numbers
You are given two linked lists representing two non-negative numbers. 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.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8


class Solution {
public:
    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
        if(l1==NULL && l2==NULL)
			return NULL;
		if (l1==NULL)
			return l2;
		if (l2==NULL)
			return l1;

		ListNode *head = NULL , *pre = NULL;
		int c=0;

		while( l1!=NULL || l2!=NULL || c!=0 )
		{
			if(l1!=NULL)
			{
				c += l1->val;
				l1 = l1->next;
			}
			if(l2!=NULL)
			{
				c += l2->val;
				l2 = l2->next;
			}
			ListNode *p = new ListNode(c%10);
			if(head == NULL)
				head = p;
			else
				pre->next = p;
			pre = p;
			c /= 10;
		}
		return head;
    }
};


#include<iostream>

using namespace std;

#define N 3

struct ListNode {
	int val;
	ListNode *next;
	ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
        if(l1==NULL && l2==NULL)
			return NULL;
		if (l1==NULL)
			return l2;
		if (l2==NULL)
			return l1;

		ListNode *head = NULL , *pre = NULL;
		int c=0;

		while( l1!=NULL || l2!=NULL || c!=0 )
		{
			if(l1!=NULL)
			{
				c += l1->val;
				l1 = l1->next;
			}
			if(l2!=NULL)
			{
				c += l2->val;
				l2 = l2->next;
			}
			ListNode *p = new ListNode(c%10);
			if(head == NULL)
				head = p;
			else
				pre->next = p;
			pre = p;
			c /= 10;
		}
		return head;
    }
};

ListNode *creatlist()
{
	ListNode *head=NULL;
	for(int i=0; i<N; i++)
	{
		int a;
		cin>>a;
		ListNode *p;
		p = (ListNode*)malloc(sizeof(ListNode));
		p->val = a;
		p->next = head;
		head = p;
	}
	return head;
}

int main()
{
	ListNode *list1 = creatlist();
	ListNode *list2 = creatlist();
	Solution lin;
	ListNode *outlist = lin.addTwoNumbers( list1,list2 );
	for(int i=0; i<N; i++)
	{
		cout<<outlist->val;
		outlist = outlist->next;
	}
}


leetcode_2_Add Two Numbers

标签:c++   leetcode   linked_list   

原文地址:http://blog.csdn.net/keyyuanxin/article/details/43817511

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!