求两个链表结点组成的数之和
来源:互联网 发布:光盘复制软件 编辑:程序博客网 时间:2024/06/05 06:29
如4->4->6 + 2->4 = 4->7->0
#include <iostream>using namespace std;typedef struct node{ int data; node *next;}node;node* init(int a[], int n){ node *head=NULL, *p; for(int i=0; i<n; ++i){ node *nd = new node(); nd->data = a[i]; if(i==0){ head = p = nd; continue; } p->next = nd; p = nd; } return head;}node* addlink(node *p, node *q){ if(p==NULL) return q; if(q==NULL) return p; node *res, *pre=NULL; int c = 0; while(p && q){ int t = p->data + q->data + c; node *r = new node(); r->data = t%10; if(pre){ pre->next = r; pre = r; } else pre = res = r; c = t/10; p = p->next; q = q->next; } while(p){ int t = p->data + c; node *r = new node(); r->data = t%10; pre->next = r; pre = r; c = t/10; p = p->next; } while(q){ int t = q->data + c; node *r = new node(); r->data = t%10; pre->next = r; pre = r; c = t/10; q = q->next; } if(c>0){//当链表一样长,而又有进位时 node *r = new node(); r->data = c; pre->next = r; } return res;}void print(node *head){ while(head){ cout<<head->data<<" "; head = head->next; } cout<<endl;}int main(){ int n = 4; int a[] = { 1, 2, 9, 3 }; int m = 3; int b[] = { 9, 9, 2 }; node *p = init(a, n); node *q = init(b, m); node *res = addlink(p, q); if(p) print(p); if(q) print(q); if(res) print(res); return 0;}
0 0
- 求两个链表结点组成的数之和
- 求两个数之和
- java 求两个链表的公共结点
- 求两个链表的第一个公共结点
- 求两个链表的第一个公共子结点
- 求a和b两个数之和
- 求a和b两个数之和
- 求A和B两个数之和
- 求从一个整数数组中两个数之和为m的两个数
- 求两个数之间的素数+一个数的各位之和+判断回文数
- 求数组中小子数之和的最小值 (子数最少两个)
- 给定一个二叉树,节点值为0-9,从根节点到叶子结点组成一个数,求二叉树所有组成的数的和
- 求任意两个数之间二进制表示的位数不同的数量之和
- C#第三周 任务4 求两个数之和
- Java 递归求后一个数是前两个数之和
- 链表面试题(十三)---求两个都不带环的链表相交的结点
- 求二叉树的所有结点之和,Python实现
- 如何求两个相交链表的第一个相交结点
- [linux内存]伙伴系统学习笔记(三)--分配器API
- 黑马程序员_面向对象简介
- XP下部同iP段共享打印机
- TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)
- Linux crontab 命令格式与详细例子
- 求两个链表结点组成的数之和
- HDU--1059 Dividing
- USACO frac1直接排序
- 《统计学习方法》学习笔记八
- Extjs4 嵌入百度地图
- Java二维数组参数传值
- knockoutjs 学习资料网址
- 12种不宜使用的Javascript语法
- msysGit 安装后的配置