# 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

public class Solution {
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if (l1 == null && l2 == null)
return null;
/*
* 在java中，基本类型变量是传值的副本，对象型变量是传引用的副本，一次ret，ll操作的是同一内存，
* 	ll用来指示链表的头结点地址
*/
ListNode ll =null;
ListNode ret=ll;
int carry = 0;
int l1_val = 0;
int l2_val = 0;
while (l1 != null || l2 != null ) {
l1_val = (null == l1) ? 0 : l1.val;
l2_val = (null == l2) ? 0 : l2.val;
int add = l1_val + l2_val + carry;
ListNode n=new ListNode(add % 10);
if(ll==null){
ll=n;
ret=n;
}else{
ret.next=n;
ret=n;
}
if (null != l1)
l1 = l1.next;
if (null != l2)
l2 = l2.next;
}
if (l1 == null && l2 == null && carry!= 0){
ListNode n = new ListNode(carry);
ret.next = n;
}
return ll;
}
public static void main(String[] args) {
ListNode l1 = new ListNode(2);
ListNode x2 = new ListNode(4);
ListNode x3 = new ListNode(3);
l1.next = x2;
x2.next = x3;

ListNode l2 = new ListNode(5);
ListNode y2 = new ListNode(6);
ListNode y3 = new ListNode(4);
l2.next = y2;
y2.next = y3;

ListNode ret = addTwoNumbers(l1, l2);
while(ret!=null&&ret.next!=null){
System.out.print(ret.val+"->");
ret=ret.next;
}
if(ret!=null)
System.out.print(ret.val);
}

• 本文已收录于以下专栏：

举报原因： 您举报文章：Add Two Numbers 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)