链式A+B
来源:互联网 发布:域名错误691是什么原因 编辑:程序博客网 时间:2024/06/05 02:07
题目描述
有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。
给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。
测试样例:
{1,2,3},{3,2,1}
返回:{4,4,4}
C/C++实现
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Plus {public: ListNode* plusAB(ListNode* a, ListNode* b) { // write code here if(a==nullptr) return b; if(b==nullptr) return a; ListNode *newlist=new ListNode(0); ListNode *pNew=newlist; ListNode *pa=a; ListNode *pb=b; int carry=0; while(pa&&pb){ int data=pa->val+pb->val+carry; if(data>=10){ data-=10; carry=1; } else{ carry=0; } ListNode *Node=new ListNode(data); pNew->next=Node; pNew=pNew->next; pa=pa->next; pb=pb->next; } while(pa!=nullptr){ int data=pa->val+carry; if(data>9){ data-=10; carry=1; } else{ carry=0; } ListNode *Node=new ListNode(data); pNew->next=Node; pNew=pNew->next; pa=pa->next; } while(pb!=nullptr){ int data=pb->val+carry; if(data>9){ carry=1; data-=10; } else{ carry=0; } ListNode *Node=new ListNode(data); pNew->next=Node; pNew=pNew->next; pb=pb->next; } if(carry){ ListNode *Node=new ListNode(1); pNew->next=Node; pNew=pNew->next; } return newlist->next; }};
0 0
- 链式A+B
- 链式A+B
- 牛客网 | 链式A+B
- 链式A+B
- 链式A+B
- 链式A+B
- 链式A+B
- 算法2.5:链式A+B
- 2.Add Two Numbers&链式A+B
- 《程序员面试金典》链式A+B
- 链式A+B之程序员面试经典
- 链式A+B(解题报告)
- [程序员面试金典]-链式A+B
- (链式存储)比较两个字符串A和B大小
- 程序员面试金典 2.5 链式A+B
- 1.2链式结构 实现 C = A U B
- 程序员面试金典题解 链式A+B
- 第五天 链式A+B +回文链表
- Hadoop和Spark分别实现二次排序
- 3水塔问题
- Polya定理的学习
- SQL语句LIMIT在MySQL中的性能分析
- 在asp.net中获取mac地址的方法(C#后台获取的方法和前台Javascript(调用ActiveX)获取的方法)
- 链式A+B
- 深度优先搜索
- Problem H: C语言实验——分数序列
- [opencv]6.添加滑动条调整图片
- XCode7.3 模拟器键盘不显示解决方案
- Highway Project 浙江省第十三届省赛K题 ZOJ 3946(dijkstra+邻接表+优先队列)
- 2016/5/3
- 第4周项目3小学生算数能力测试
- 基础数据结构之栈和队列