package org.example.test;
import com.alibaba.fastjson.JSONObject;
public class LinkedNodeTest {
public static void main(String[] args) {
ListNode node = new ListNode(9);
ListNode node1 = new ListNode(3);
node.next = node1;
ListNode node11 = new ListNode(7);
node1.next = node11;
ListNode node2 = new ListNode(6);
ListNode node3 = new ListNode(3);
node2.next = node3;
ListNode node4 = addInList(node, node2);
System.out.println(JSONObject.toJSONString(node4));
ListNode node12 = new ListNode(0);
ListNode point = node12;
point.next = new ListNode(1);
System.out.println(node12.next.val);
}
public static class ListNode {
int val;
ListNode next = null;
public ListNode(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode next) {
this.next = next;
}
}
/**
* 先把2个链表反转,然后遍历相加,然后再反转。
*
* @param head1
* @param head2
* @return
*/
public static ListNode addInList(ListNode head1, ListNode head2) {
head1 = getReverseListNode(head1);
head2 = getReverseListNode(head2);
ListNode cur1 = head1;
ListNode cur2 = head2;
ListNode node = new ListNode(0);
ListNode point = node;
int tmp = 0;
while (cur1 != null && cur2 != null) {
int x = cur1.val;
int y = cur2.val;
int sum = x + y + tmp;
if (sum >= 10) {
sum = sum % 10;
tmp = 1;
} else {
tmp = 0;
}
point.next = new ListNode(sum);
point = point.next;
cur1 = cur1.next;
cur2 = cur2.next;
}
while (cur1 != null) {
int a = cur1.val;
int sum = a + tmp;
if (sum >= 10) {
sum = sum % 10;
tmp = 1;
} else {
tmp = 0;
}
point.next = new ListNode(sum);
point = point.next;
cur1 = cur1.next;
}
while (cur2 != null) {
int a = cur2.val;
int sum = a + tmp;
if (sum >= 10) {
sum = sum % 10;
tmp = 1;
} else {
tmp = 0;
}
point.next = new ListNode(sum);
point = point.next;
cur2 = cur2.next;
}
if (tmp == 1) {
point.next = new ListNode(1);
}
node = getReverseListNode(node.next);
return node;
}
private static ListNode getReverseListNode(ListNode head1) {
ListNode pre = null;
ListNode next;
while (head1 != null) {
next = head1.next;
head1.next = pre;
pre = head1;
head1 = next;
}
return pre;
}
}