zoukankan      html  css  js  c++  java
  • 单链表大整数加法

    单链表大整数加法,节点是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 }
  • 相关阅读:
    MongoDB 基础学习
    在 PostgreSQL 中使用码农很忙 IP 地址数据库
    在 MySQL 中使用码农很忙 IP 地址数据库
    编译opencv和opencv_contrib
    修改本次提交日志
    clone报告超过限制
    修改gitolite管理员
    libevent简介[翻译]11 连接监听:接收一个TCP连接
    libevent简介[翻译]11 Evbuffers:缓冲IO的功能函数
    Windows查看TCP连接数
  • 原文地址:https://www.cnblogs.com/bobo0892/p/3999739.html
Copyright © 2011-2022 走看看