package addList;
import java.util.Currency;
import java.util.List;
/**
* @author 真他喵的学不动咯
* @create 2022-08-11--21:32
*/
public class add { //两个链表相加
public class ListNode{
//属性
ListNode next;
}
//求链表长度
public static int listLength(ListNode head){
int len=0; //初始化值
while (head!=null){
len++;
head=head.next;
}
return len;
}
//
public static ListNode addTwoNumber(ListNode head1,ListNode head2){
int len1=listLength(head1);
int len2=listLength(head2);
ListNode l = len1>=len2? head1:head2; //长链表给l
ListNode s= l==head1? head2:head1; //简化版本,短链表给s
// if(l==head1){
// ListNode s = head1;
// }
// else{
// ListNode s = head2; //短链表给s
// }
ListNode curl=l;
ListNode curs=s;
ListNode last=curl; //last一直跟踪curl这个长链表
int carry=0; //临时变量进位
int curNum=0; //临时变量当前加的值(非进位)
//第一阶段:长短链表都有
while (curs!=null){
curNum=curl.val+curs.val+carry; //当前值
curl.val=(curNum%10); //进位后的值
carry=curNum/10;//进位
last=curl;
curl=curl.next; //长短链表进行下一位的++
curs=curs.next;
}
//第二阶段: 短链表结束,长链表还没结束
while (curl!=null){
curNum=curl.val+carry; //当前值
curl.val=(curNum%10);
last= curl;
carry=(curNum/10);
curl=curl.next;
}
//第三阶段:长短链表都结束,但是有进位信息存在
if(carry!=0){
last.next=new ListNode(1); //last一直跟随长链表,等长链表结束以后,last给最后的进位补一位
//new ListNode(1)??? (1)是什么东西
}
return l;
}
}
06-18
403
03-13
6万+
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交