链表求和-LintCode
2017-08-16 19:45
267 查看
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
样例
给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
样例
给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
#ifndef C167_H #define C167_H #include<iostream> using namespace std; struct ListNode{ int val; ListNode *next; ListNode(int x) :val(x), next(NULL) {} }; class Solution { public: /** * @param l1: the first list * @param l2: the second list * @return: the sum list of l1 and l2 */ ListNode *addLists(ListNode *l1, ListNode *l2) { // write your code here if (l1 == NULL) return l2; if (l2 == NULL) return l1; ListNode *p = l1, *q = l2; int len1 = 0, len2 = 0; ListNode *p1 = l1, *q1 = l2; while (p1 != NULL) { len1++; p1 = p1->next; } while (q1 != NULL) { len2++; q1 = q1->next; } bool tag = false;//是否进位 if (len1 >= len2)//比较两者长度 { while (p != NULL || q != NULL) { if (q != NULL) { if (tag == false) p->val = p->val + q->val; else p->val = p->val + q->val + 1; if (p->val >= 10) { p->val -= 10; tag = true; if (p->next == NULL) { p->next = new ListNode(1); tag = false; } } else tag = false; p = p->next; q = q->next; } else { if (tag == true) { p->val = p->val + 1; if (p->val == 10) { p->val = 0; tag = true; if (p->next == NULL) { p->next = new ListNode(1); tag = false; } } else tag = false; } p = p->next; } } return l1; } else { while (p != NULL || q != NULL) { if (p != NULL) { if (tag == false) q->val = p->val + q->val; else q->val = p->val + q->val + 1; if (q->val >= 10) { q->val -= 10; tag = true; if (q->next == NULL) { q->next = new ListNode(1); tag = false; } } else tag = false; p = p->next; q = q->next; } else { if (tag == true) b2ba { q->val = q->val+1; if (q->val == 10) { q->val = 0; tag = true; if (q->next == NULL) { q->next = new ListNode(1); tag = false; } } else tag = false; } q = q->next; } } return l2; } } }; #endif
相关文章推荐
- lintcode-链表求和
- lintcode ----链表求和
- lintcode-167-链表求和
- LintCode-第168题 链表求和
- lintcode 链表求和
- LintCode-链表求和
- lintcode(221)链表求和 II
- lintcode,167,链表求和
- [LintCode]链表求和
- 链表求和(LintCode)
- 链表求和 II-LintCode
- LintCode | 167. 链表求和
- LintCode【简单】167. 链表求和 。代码及思路
- LintCode 链表求和
- LintCode 第167题目 链表求和
- lintcode-221-链表求和 II
- [Lintcode] #167 链表求和
- lintcode-链表求和
- python_lintcode_167链表求和
- 链表求和-LintCode