* Definition for singly-linked list.
lass Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
// 第一步构建返回值 这个变量构建就知道大家的基础老师是什么水平了(主要看他讲的细不细)
ListNode head = null, tail = null;
// 余数
int mod = 0;
//第二步取值 || 是防止两个序列不等长的情况
while(l1 !=null || l2!=null ){
// 这道题这里看懂了就能解开了 ( 这个链表 不存在下标 对象连对象 这题也就考一下链表的数据结构)
//三目运算对空值处理
int n1 = l1 != null ? l1.val : 0;
int n2 = l2 != null ? l2.val : 0;
// 所谓的余数是进位 非0即1
int sum = mod +n1+n2;
// 首次循环
if(head == null){
// 表示只有一个节点 不足十对十取余是自身 多余十对十取余是该为应有的值( 一个小逻辑原谅我数学不好 解释不太清楚)
head = tail = new ListNode(sum%10) ;
}else{
// 尾节点
tail.next = new ListNode(sum%10);
// 尾节点变更
tail = tail.next;
}
//计算机计算方式 整数计算智能得到整数 不足十为0 多余十为1 ( 一位加减加不出最高9+9)
mod = sum/10;
// 真正的链表遍历
if (l1 != null) {
l1 = l1.next;
}
if (l2 != null) {
l2 = l2.next;
}
}
// 循环结束时候如果mod>0则需进位
if (mod> 0) {
tail.next = new ListNode(carry);
}
return head;
}
}