链表相加算法详解:用 Java 代码实现两个链表的加法运算
"package addTwoNumbers;\n\n//两数相加\n\npublic class addTwoNumbers {\n public class ListNode {\n int val;\n ListNode next;\n public ListNode() {}\n public ListNode(int val) { this.val = val; }\n public ListNode(int val, ListNode next) { this.val = val; this.next = next; }\n }\n\n public ListNode Solution(ListNode l1, ListNode l2) {\n ListNode l3 = new ListNode(-1); //定义一个新链表的头节点l3\n ListNode node3 = l3; //定义头节点的副本node3\n int ex = 0; //定义一个进位值ex\n\n while (l1 != null || l2 != null){\n ListNode nodeNext = new ListNode(-1); //定义node的后继节点\n node3.next = nodeNext;\n //将l1的val赋值给a\n int a = 0;\n if (l1 != null){\n a = l1.val;\n }\n //将l2的val赋值给b\n int b = 0;\n if (l2 != null){\n b = l2.val;\n }\n //将a和b的和赋值给c再加上进位值ex即为放入新链表的和\n int c = a + b + ex;\n //进行判断;若c >= 10 则产生进位值\n if (c >= 10){\n c = c - 10;\n nodeNext.val = c;\n ex = 1;\n }else {\n nodeNext.val = c;\n ex = 0;\n }\n\n //以下各节点往后走一步\n node3 = node3.next;\n if (l1 != null) {\n l1 = l1.next;\n }\n if (l2 != null) {\n l2 = l2.next;\n }\n }\n //若循环走完仍然有进位值,则说明最后一位值位10,所以再新建一个尾巴节点值位1\n if (ex == 1){\n ListNode cur = new ListNode(1);\n node3.next = cur;\n }\n //返回头节点的next域\n return l3.next;\n }\n}
原文地址: https://www.cveoy.top/t/topic/pRcp 著作权归作者所有。请勿转载和采集!