首页 > 代码库 > 单链表大整数加法
单链表大整数加法
单链表大整数加法,节点是char型。
First List: head->1->8->9
Second List: head->9->8->1
Result List: head->1->1->7->0
实现了单链表(单链表类模板),现在使用单链表实现大整数加法
1 #include "stdafx.h" 2 #include "SingleList.h" 3 #include <string.h> 4 class BigDataList{ 5 public: 6 BigDataList(){ 7 } 8 public: 9 SingleList<char>* add(SingleList<char> &l1, SingleList<char> &l2);10 };11 SingleList<char>* BigDataList::add(SingleList<char> &l1 , SingleList<char> &l2){12 l1.ReverseSinglyLinkedList();13 l2.ReverseSinglyLinkedList();14 SingleList<char> *l3=new SingleList<char>;15 int length1 = l1.length();16 int length2 = l2.length();17 int ceil = 0 ;18 int mod = 0;19 int i = 0;20 if(length2==length1){21 for(;i <length1 && i < length2 ; i++){22 mod = ((l1.get(i)-‘0‘)+((l2.get(i)-‘0‘))+ceil)%10;23 ceil = ((l1.get(i)-‘0‘)+((l2.get(i)-‘0‘))+ceil)/10;24 l3->insert(‘0‘+mod,i);25 }26 if(ceil>0){27 l3->insert(ceil+‘0‘,i);28 }29 }30 else if(length1>length2){31 for(; i<length2 ; i++){32 mod = ((l1.get(i)-‘0‘)+((l2.get(i)-‘0‘))+ceil)%10;33 ceil = ((l1.get(i)-‘0‘)+((l2.get(i)-‘0‘))+ceil)/10;34 l3->insert(‘0‘+mod,i);35 }36 for(;i<length1;i++){37 mod = ((l1.get(i)-‘0‘)+ceil)%10;38 ceil = ((l1.get(i)-‘0‘)+ceil)/10;39 l3->insert(‘0‘+mod,i);40 }41 if(ceil>0){42 l3->insert(ceil+‘0‘,i);43 }44 }45 else{46 for(; i<length1 ; i++){47 mod = ((l1.get(i)-‘0‘)+((l2.get(i)-‘0‘))+ceil)%10;48 ceil = ((l1.get(i)-‘0‘)+((l2.get(i)-‘0‘))+ceil)/10;49 l3->insert(‘0‘+mod,i);50 }51 for(;i<length2;i++){52 mod = ((l2.get(i)-‘0‘)+ceil)%10;53 ceil = ((l2.get(i)-‘0‘)+ceil)/10;54 l3->insert(‘0‘+mod,i);55 }56 if(ceil>0){57 l3->insert(ceil+‘0‘,i);58 }59 }60 l3->ReverseSinglyLinkedList();61 l3->print();62 63 return l3;64 }
单链表大整数加法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。