牛客题霸 [两个链表生成相加链表] C++题解/答案
题目描述
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。
例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。
题解
先用两个栈来存两个链表的数,然后两个栈一起弹出,并加法运算后,将%10结果存在新的链表里
整个过程比较直接
代码:
/*** struct ListNode {* int val;* struct ListNode *next;* };*/class Solution {
public:/*** * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类*/ListNode* addInList(ListNode* head1, ListNode* head2) {// write code herestack<int> a;stack<int> b;while (head1 || head2){if (head1){a.push(head1->val);head1 = head1->next;}if (head2){b.push(head2->val);head2 = head2->next;}}int sum = 0, carry = 0;ListNode* pre = new ListNode(-1);while (!a.empty() || !b.empty() || carry != 0){int x = 0, y = 0;if (!a.empty()){x = a.top();a.pop();}if (!b.empty()){y = b.top();b.pop();}sum = x + y + carry;carry = sum / 10;sum = sum % 10;ListNode* cur = new ListNode(sum);cur->next = pre->next;pre->next = cur;}return pre->next;}
};