域名和网站绑定,scc全球电商分发平台,网站建设论文二稿,网站后台的意义题目
给你两个 非空 的链表#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的#xff0c;并且每个节点只能存储 一位 数字。
请你将两个数相加#xff0c;并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外#xff0c;这两个数都不会…题目
给你两个 非空 的链表表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的并且每个节点只能存储 一位 数字。
请你将两个数相加并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外这两个数都不会以 0 开头。
思路
建立链表l3,同时遍历两个链表对每个节点的数相加如果一个链表遍历完停止遍历让它节点代表的数置为0直到两个数都遍历完。设置一个进位标记当链表遍历结束但进位标记不为0则表示多出一位进位再创立一个节点接受进位。
代码
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode *x1l1,*x2l2,*l3,*pre,*last;int sum,carry0,a,b;l3new ListNode(0);prel3;lastNULL;while(x1||x2){if(x1NULL){a0;}else{ax1-val;}if(x2NULL){b0;}else{bx2-val;}sumabcarry;carrysum/10;if(last!NULL){prenew ListNode(0);pre-valsum%10;last-nextpre;}else{pre-valsum%10;}lastpre;if(x1!NULL){x1x1-next;}if(x2!NULL){x2x2-next;}}if(carry0){prenew ListNode(carry);last-nextpre;}return l3;}
};