算法学习-链表相加
来源:互联网 发布:软件项目实施进度计划 编辑:程序博客网 时间:2024/06/08 05:52
题目
此题为简单的数学加法计算和简单的链表操作的结合,很简单,直接附上代码给定两个链表,分别表示两个非负整数。他们的数字逆序存储在链表中,且每个节点只存储一个数字,计算两个数的和,并且返回和的链表头指针。
如:输入2->4->3、5->6->4,输出:7->0->8
#include "stdafx.h"#include <stdlib.h>typedef struct tagSNode{int value;tagSNode* pNext;tagSNode(int v): value(v), pNext(NULL){}}SNode;void Print(SNode* pHead){if (!pHead){return;}SNode* p = pHead->pNext;while(p){printf("%d", p->value);p = p->pNext;}printf("\n");}SNode* Add(SNode* pHead1, SNode* pHead2){SNode* pSum = new SNode(0);SNode* pTail = pSum;SNode* p1 = pHead1->pNext;SNode* p2 = pHead2->pNext;SNode* pCur;int carry = 0;int value;while (p1 && p2){value = p1->value + p2->value + carry;carry = value / 10;value %= 10;pCur = new SNode(value);pTail->pNext = pCur;pTail = pCur;p1 = p1->pNext;p2 = p2->pNext;}// 处理较长的链SNode* p = p1 ? p1 : p2;while (p){value = p->value + carry;carry = value / 10;value %= 10;pCur = new SNode(value);pTail->pNext = pCur;pTail = pCur;p = p->pNext;}// 处理最后可能有的进位if (carry != 0){pTail->pNext = new tagSNode(carry);}return pSum;}void Destory(SNode* &pHead){if (!pHead){return;}SNode* p = pHead->pNext;while(p){SNode* pTmp = p;p = p->pNext;delete pTmp;}delete pHead;pHead = NULL;}int _tmain(int argc, _TCHAR* argv[]){SNode* pHead1 = new SNode(0);int i;for (i = 0; i < 6; i++){SNode* p = new SNode(rand() % 10);p->pNext = pHead1->pNext;pHead1->pNext = p;}SNode* pHead2 = new SNode(0);for(i = 0; i < 9; i++){SNode* p = new SNode(rand() % 10);p->pNext = pHead2->pNext;pHead2->pNext = p;}Print(pHead1);Print(pHead2);SNode* pSum = Add(pHead1, pHead2);Print(pSum);Destory(pHead1);Destory(pHead2);Destory(pSum);system("pause");return 0;}
注:这里进位不可能大于1所以仅为可以用bool来表示
这个题目可以扩展成为一个大整数加法运算和高精度小数运算。
0 0
- 算法学习-链表相加
- 算法学习 1、链表相加
- 链表算法六之多项式相加
- 双链表&链表合并&多项式相加算法
- 算法:两个单链表生成相加链表
- 链表形式 写出两个一元多项式相加的算法
- 算法优解(7)-相加链表
- 多项式相加链表
- 两个链表相加
- 两个链表相加
- 两个链表相加
- 链表相加
- 链表相加
- 链表相加
- 链表相加
- 链表相加
- 链表相加
- Java-链表相加
- Log4Net记录日志到数据库启动24小时后将无法向mysql数据库插入数据
- 宁静致远一身轻
- SQL Server - 数据库恢复的时候停在 Restoring 状态
- Post与Get区别
- 通信之路学习汇总 =>>UE 接入和释放
- 算法学习-链表相加
- 为小白学iOS约束打造 -- NSLayoutConstraint
- 浅谈HTTP中Get与Post的区别
- linux 下 mysql的一些操作命令
- Java 生成随机汉字名称
- jQuery小练习3
- 如何在Ubuntu 14.04上利用HAProxy为WordPress与Nginx构建7层负载均衡器
- 如何识别牛逼的前端工程师
- spring data 整合 couchbase