You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

代码:

vector<int> v1;
vector<int> v2;
int num1;
int num2;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
void insertAtTail(ListNode* &reslist,int val)
{
ListNode* p=reslist;
while (p->next)
p=p->next;
ListNode* newNode=(ListNode*)malloc(sizeof(ListNode));
newNode->val=val;
newNode->next=p->next;
p->next=newNode; }
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
if(l1==NULL&&l2==NULL) return NULL;
ListNode* reslist=NULL;
int jinwei=;
while(l1!=NULL&&l2!=NULL){
if((l1->val+l2->val+jinwei)<){
if(reslist==NULL){
reslist=(ListNode*)malloc(sizeof(ListNode));
reslist->val=l1->val+l2->val+jinwei;
reslist->next=NULL;
}else{
insertAtTail(reslist,l1->val+l2->val+jinwei);
}
jinwei=;
}else{
if(reslist==NULL){
reslist=(ListNode*)malloc(sizeof(ListNode));
reslist->val=l1->val+l2->val+jinwei-;
reslist->next=NULL;
}else{
insertAtTail(reslist,l1->val+l2->val+jinwei-);
}
jinwei=;
}
l1=l1->next;
l2=l2->next;
}
while(l1!=NULL){
if(l1->val+jinwei<){
insertAtTail(reslist,l1->val+jinwei);
jinwei=;
}else{
insertAtTail(reslist,l1->val+jinwei-);
jinwei=;
}
l1=l1->next;
}
while(l2!=NULL){
if(l2->val+jinwei<){
insertAtTail(reslist,l2->val+jinwei);
jinwei=;
}else{
insertAtTail(reslist,l2->val+jinwei-);
jinwei=;
}
l2=l2->next;
}
if(l1==NULL&&l2==NULL&&jinwei!=){
insertAtTail(reslist,jinwei);
}
return reslist;
}
}; void CreateListHead(ListNode* &head, int n)
{
int j=;
head = (ListNode*)malloc(sizeof(ListNode));
head->next=NULL;
head->val=v1[j++];
ListNode* p=head;
for (int i=;i<n;++i)
{
ListNode* newNode;
newNode = (ListNode*)malloc(sizeof(ListNode));
p->next=newNode;
newNode->next=NULL;
newNode->val=v1[j++];
p=p->next;
}
}
void CreateListHead2(ListNode* &head, int n)
{
int j=;
head = (ListNode*)malloc(sizeof(ListNode));
head->next=NULL;
head->val=v2[j++];
ListNode* p=head;
for (int i=;i<n;++i)
{
ListNode* newNode;
newNode = (ListNode*)malloc(sizeof(ListNode));
p->next=newNode;
newNode->next=NULL;
newNode->val=v2[j++];
p=p->next;
}
}
int main()
{
freopen("C:\\Users\\Administrator\\Desktop\\a.txt","r",stdin);
cin>>num1;
for (int i=;i<num1;++i)
{
int temp;
cin>>temp;
v1.push_back(temp);
}
cin>>num2;
for (int i=;i<num2;++i)
{
int temp;
cin>>temp;
v2.push_back(temp);
}
ListNode* head1=NULL;
CreateListHead(head1,num1);
ListNode* head2=NULL;
CreateListHead2(head2,num2);
Solution so;
ListNode* res=so.addTwoNumbers(head1,head2);
return ;
}

最新文章

  1. 用RMAN备份EBS数据库的脚本
  2. 江太公:javascript count(a)(b)(c)(d)运行过程思考
  3. Device eth0 does not seem to be present, delaying initialization. 问题
  4. 安装文件制作工具Wix概念快速入门
  5. 如何使用命令行编译以及运行java文件
  6. RPD资料库创建(1)
  7. [转]Android WebView播放视频(包括全屏播放),androidwebview
  8. 使用C#中JavaScriptSerializer类将对象转换为Json格式数据
  9. android开发之socket快传文件以及消息返回
  10. [itint5]交替字符串
  11. java 数据流
  12. Java基础总结--多线程总结1
  13. for in,Object.keys()与for of的区别
  14. Mac下用SSH连接远程Linux或Mac服务器
  15. XAF_GS_02_创建第一个XAF项目
  16. tp5 日志文件名称问题
  17. PLSQL_R12 MOAC多组织的四个应用(案例)
  18. #004 C语言大作业学生管理系统试着做
  19. CDQ分治与整体二分学习笔记
  20. 下载并配置jdk

热门文章

  1. [BZOJ1004][HNOI2008]Cards 群论+置换群+DP
  2. VS2012出现加载失败时的解决办法 win7同样适用
  3. js基础 -----鼠标事件(按下 拖拽)
  4. mui 时间日期控件(浏览器上无法查看,在手机端可以点击)
  5. TNS-00511: 无监听程序
  6. iOS Programming UINavigationController
  7. 如何用 CSS 绘制各种形状
  8. Asp.Net 设计模式 之 “工厂方法”即利用 接口 实现的抽象工厂
  9. 整合Activiti Modeler到业务系统(或BPM平台)
  10. (转)淘淘商城系列——发布dubbo服务