Linkcode 167 链表求和
来源:互联网 发布:知乎 如何练宽 编辑:程序博客网 时间:2024/06/05 15:34
描述:
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。
写出一个函数将两个整数相加,用链表形式返回和。样例:
给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null题解:
和二进制求和一样,不过这换成了十进制求和,操作的数据结构也变成了链表,其他思路都一样代码:
/** * Definition for singly-linked list. * 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 ListNode *p = l1; ListNode *q = l2; int num = 0, c = 0; ListNode *pHead = NULL; //链表的头结点 ListNode *pTemp = NULL; //链表的尾结点 //将链表相同长度部分相加 while(p != NULL && q != NULL) { num = p->val + q->val + c; c = num / 10; num = num % 10; ListNode *Node = new ListNode(num); if(pHead == NULL) { pHead = Node; } else { pTemp->next = Node; } pTemp = Node; p = p->next; q = q->next; } //如果p链表长,将长的部分加上 while(p != NULL) { num = p->val + c; c= num / 10; num = num % 10; ListNode *Node = new ListNode(num); if(pHead == NULL) { pHead = Node; } else { pTemp->next = Node; } pTemp = Node; p = p->next; } //如果q链表长,将长的部分加上 while(q != NULL) { num = q->val + c; c= num / 10; num = num % 10; ListNode *Node = new ListNode(num); if(pHead == NULL) { pHead = Node; } else { pTemp->next = Node; } pTemp = Node; q = q->next; } //如果还有进位,将进位加上 if(c != 0) { ListNode *Node = new ListNode(c); pTemp->next = Node; } return pHead; }};
0 0
- Linkcode 167 链表求和
- 167链表求和
- 链表求和 & 二进制求和
- lintcode,167,链表求和
- lintcode 167 链表求和
- [Lintcode] #167 链表求和
- LintCode 第167题目 链表求和
- 链表多项式求和
- 链表求和
- LintCode 链表求和
- 链表求和
- lintcode ----链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- KMP、BM、Sunday等字符串匹配算法及实现
- 选择排序、插入排序、冒泡排序python实现
- Delphi 计算火币网KDJ指标数值
- 聊聊IO多路复用之select、poll、epoll详解
- Listview和Gridview的局部刷新
- Linkcode 167 链表求和
- 聊聊C10K问题及解决方案
- HTTP 协议详解
- kali linux 忘记密码
- 51Nod-1243-排船的问题
- Lintcode 66 二叉树的前序遍历
- 当 Python 和 R 遇上北京二手房
- 刷刷笔试题~~[概率]
- Android中getChildAt()方法介绍