链表形式的大整数加法,这道题主要考察一下关于链表的操作,比较简单。
注意,java的“=”传递的是引用;
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int m,n,tmp;
int a,b,s,ca;
ListNode p1=l1,p2=l2,p3;
ListNode sum=null;
for(m=1;;m++)
{
if(p1.next!=null)
p1=p1.next;
else
break;
}
for(n=1;;n++)
{
if(p2.next!=null)
p2=p2.next;
else
break;
}
if(m>n)
{
p1=l1;l1=l2;l2=p1;
tmp=m;m=n;n=tmp;
}
//System.out.println("m="+m+"; n="+n);
int i;
ca=0;
p1=l1;p2=l2;p3=new ListNode(-1);
for(i=0;i<n+1;i++)
{
if(p1==null)
a=0;
else
a=p1.val;
if(p2==null)
b=0;
else
b=p2.val;
s=a+b+ca;
if(i==n && s==0)
break;
p3.next=new ListNode(s%10);
if(i==0)
sum=p3.next;
ca=s/10;
if(p1!=null)
p1=p1.next;
if(p2!=null)
p2=p2.next;
p3=p3.next;
}
return sum;//*/
}
}
本文介绍了一种使用链表实现大整数加法的方法。通过遍历两个链表并逐位相加的方式,实现了两个大整数的加法运算。文章详细展示了算法的具体实现过程。
510

被折叠的 条评论
为什么被折叠?



