class Solution { private static ListNode reverse(ListNode head) { ListNode pre = null; ListNode cur = head; ListNode next; while (cur != null) { next = cur.next; cur.next = pre; pre = cur; cur = next; } return pre; } private static ListNode add(ListNode a, ListNode b) { int dig = 0; ListNode head = new ListNode(0); ListNode p = head; while (a != null && b != null) { int val = dig + a.val + b.val; ListNode n = new ListNode(val % 10); p.next = n; p = n; dig = val / 10; a = a.next; b = b.next; } while (a != null) { int val = dig + a.val; ListNode n = new ListNode(val % 10); p.next = n; p = n; dig = val / 10; a = a.next; } while (b != null) { int val = dig + b.val; ListNode n = new ListNode(val % 10); p.next = n; p = n; dig = val / 10; b = b.next; } if (dig != 0) { ListNode n = new ListNode(dig); p.next = n; } p = head.next; head = null; return p; } private static ListNode function(ListNode a, ListNode b) { return reverse(add(reverse(a), reverse(b))); } private static void print(ListNode head) { while (head != null) { System.out.println(head.val); head = head.next; } } public static void main(String[] args) { ListNode n1 = new ListNode(9); ListNode n2 = new ListNode(3); ListNode n3 = new ListNode(7); // ListNode n4 = new ListNode(5); // ListNode n5 = new ListNode(1); n1.next = n2; n2.next = n3; // n3.next = n4; // n4.next = n5; ListNode n11 = new ListNode(6); ListNode n22 = new ListNode(3); n11.next = n22; ListNode head = function(n1, n11); print(head); } } class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }
两个链表生成相加链表
猜你喜欢
转载自blog.51cto.com/tianyiya/2334841
今日推荐
周排行