`

如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。

阅读更多
/**   
 * 超大整数相加:   
 * 题目要求:如果系统要使用超大整数(超过long的范围),请你设计一个数据结构来存储这种   
 * 超大型数字以及设计一种算法来实现超大整数的加法运算   
 * @author Administrator   
 *   
 */   
public class VeryBigNumAdd {    
    /**   
     * @param args   
     */   
    public static void main(String[] args) {    
       // TODO Auto-generated method stub    
       /*   
       String a="1223232";   
       for(int i=a.length()-1;i>=0;i--)   
       {   
           System.out.print(a.charAt(i));   
       }   
       */   
       VeryBigNumAdd vbn=new VeryBigNumAdd();    
       String a="123453243455535634535252345234677576252241234123523453664563634";    
       String b="123453243455535634535252345234677576252241234123523453664563634";    
       String result=vbn.doAdd(a,b);    
       System.out.println("result:"+result);    
    }    
    /**   
     *   
     * @param a 加数字符串1   
     * @param b 加数字符串2   
     * @return 结果字符串   
     * 分析:   
     * 1、取得两个字符串的长度   
     * 2、把两个的长度做比较,并得出较长的长度,及较短的长度   
     * 3、把长度较短的加数字符串,在左面补0,使之与较长的字符串一样长   
     * 4、从最高位,一个个数的取出来相加,当然首先得转换为整型   
     * 5、设置进位,如果两个数相加及加上进位大于等于10,并且这不是最左边一个字符相加,相加结果等于   
     *    (取出1+取出2+进位)-10,并把进位设为1;如果没有大于10,就把进位设为0,如些循环,把   
     *    相加的结果以字符串的形式结合起来,就得到最后的结果   
     */   
    String doAdd(String a,String b)    
    {    
       String str="";    
       int lenA=a.length();    
       int lenB=b.length();    
       int maxLen=(lenA>lenB) ? lenA : lenB;    
       int minLen=(lenA<lenB) ? lenA : lenB;    
       String strTmp="";    
       for(int i=maxLen-minLen;i>0;i--)    
       {    
           strTmp+="0";    
       }    
       //把长度调整到相同    
       if(maxLen==lenA)    
       {    
           b=strTmp+b;    
       }else   
           a=strTmp+a;    
       int JW=0;//进位    
       for(int i=maxLen-1;i>=0;i--)    
       {             
           int tempA=Integer.parseInt(String.valueOf(a.charAt(i)));    
           int tempB=Integer.parseInt(String.valueOf(b.charAt(i)));    
           int temp;    
           if(tempA+tempB+JW>=10 && i!=0)    
           {    
              temp=tempA+tempB+JW-10;    
              JW=1;    
           }    
           else   
           {    
              temp=tempA+tempB+JW;    
              JW=0;    
           }             
           str=String.valueOf(temp)+str;             
       }    
       return str;    
    }    
}  



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Ghosthuo/archive/2008/09/11/2914754.aspx
分享到:
评论

相关推荐

    数据结构课程设计长整数加减乘除

    在数据结构课程设计中,长整数加减乘除是一个典型的实践项目,它涉及到计算机科学中的基础算法和数据表示。这个项目通常要求学生利用链表数据结构来处理超过普通整型变量所能表示的大整数。下面我们将深入探讨这个...

    数据结构课程设计-长整数四则运算

    在这个设计中,我们使用双向循环链表来存储长整数,这是一种高效且灵活的数据结构,适用于处理大数据量的情况。 首先,我们要了解长整数的存储方式。在本设计中,每个结点包含一个整形变量,其范围是 -(2^15 - 1)~...

    长整数的代数运算数据结构课设

    每个数组元素可以代表一个数字位,例如,如果数组的每个元素能存储一个0-9的数字,那么一个长度为n的数组可以表示一个n位的数字。通过这种方式,我们可以存储任意大小的长整数,只要内存足够。 指针在此用于动态地...

    数据结构长整数实验报告

    - 使用双向循环链表作为长整数的存储结构,每个节点包含一个整型变量,该变量的取值范围是 \(-2^{15}\) 到 \(2^{15}-1\)。 - 输入和输出格式遵循中国长整数的标准表示习惯:每四位数字为一组,并且组间用逗号隔开...

    (数据结构与算法)两个大整数相加

    在大多数编程语言中,内置的整数类型如int或long通常有最大值限制,对于超出这些范围的大整数,我们可以使用链表、数组或其他自定义的数据结构来存储。例如,我们可以用一个字符数组来表示每一位,从低位到高位,...

    数据结构之长整数四则运算

    在IT领域,尤其是在编程实践中,数据结构是至关重要的一个部分,它涉及到如何高效地存储和组织数据。在“数据结构之长整数四则运算”这个主题中,我们主要探讨的是如何利用数据结构来实现对长整数进行加、减、乘、除...

    数据结构任意长整数加法源程序

    在这个“数据结构任意长整数加法源程序”中,我们聚焦于一个具体的数据结构应用——处理大整数的运算。在传统编程中,整数的大小通常受限于硬件的限制,但通过特定的数据结构和算法,我们可以实现对任意长度整数的...

    自己实现超大整数加法运算

    超大整数是指超过了常规整型数据类型所能表示范围的数字,它们通常需要使用特殊的算法和数据结构来存储和操作。这篇博客“自己实现超大整数加法运算”探讨的就是如何编写代码来实现这种运算。 首先,我们需要了解...

    数据结构:长整数的加减法(任意长度的加减法).doc

    本篇报告将详细探讨如何使用数据结构,特别是双向链表,来实现任意长度的长整数加减法。 **一、需求分析** 1. **存储结构**:利用链表实现长整数的存储,每个链表结点包含一个整型变量。由于C语言中的int类型有...

    数据结构(大整数加法)

    当我们处理大整数加法时,由于普通整数类型在计算机内存中的限制,不能直接存储和运算超大的数值,这就需要利用特定的数据结构和算法来解决。本主题主要探讨如何使用数据结构来实现大整数的加法操作。 首先,我们...

    车牌号管理系统数据结构课程设计报告.doc

    数据结构课程设计报告的核心是构建一个车牌号管理系统,旨在训练学生将所学的数据结构知识应用于实际问题解决。在这个车牌号管理系统中,主要涉及到以下几个关键知识点: 1. **数据结构**: - **基数排序**:用于...

    数据结构长整数课程设计

    在本课程设计中,主题为“数据结构长整数课程设计”,主要目标是设计和实现一个长整数的运算系统,该系统利用数据结构中的单链表和数组方法处理长整数的加减乘除以及比较大小的运算。长整数的存储方式采用链表结构,...

    大整数运算,数据结构链表

    一种常见的方法是使用链表结构,每个节点存储一个或多个数字位,通过链接这些节点可以构建出任意长度的整数。 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据元素和指向下一个节点的指针。在大整数...

    长整数四则运算(数据结构)

    数组中的每个元素代表一个位,例如,如果每个元素可以存储16位,那么数组长度为4的长整数可以表示2^64的整数,远超普通int类型的范围。链表结构则更灵活,可以动态调整存储位数,但可能在访问速度上稍逊色于数组。 ...

    大整数的运算 数据结构课程设计.docx

    设计的数据结构应能适应这种格式,同时考虑到长整数可能的无限长度,选择使用链表而非数组。考虑到输入和计算的方向,选择了双向循环链表,这是因为链表可以动态地分配空间,便于处理未知长度的数字,而双向链表则...

    数据结构c++长整数四则运算

    一种常见的解决方案是使用链表来表示长整数,每个节点存储一个数字位。这样可以方便地进行四则运算。在C++中,我们可以创建一个结构体或类,比如叫做`BigIntNode`,它包含一个int类型的数值和指向下一个节点的指针。...

    数据结构 通讯录管理系统设计

    【数据结构 通讯录管理系统设计】是一个以数据结构为基础的实用程序,旨在提供一个便捷的通讯录管理平台。在这个系统中,重点在于如何利用数据结构有效地存储和操作联系人信息。设计目标是通过实践加深对数据结构...

    数据结构长整数四则运算代码

    比如,如果使用数组,我们可以选择每一位存储一个字符,代表0-9之间的数字,或者使用整型数组,每个元素存储多位。数组的首元素通常是最高位(MSB,Most Significant Bit),而最低位(LSB,Least Significant Bit)...

    大整数加减乘除指数运算课程设计数据结构(源代码+实验报告,期末成绩优秀)

    非对称密码在加密和解密时,是把加密的数据当作一个大的正整数来处理,这样就涉及到大整数的加、减、乘、除和指数运算等,同时,还需要对大整数进行输出。请采用相应的数据结构实现大整数的加、减、乘、除和指数运算...

Global site tag (gtag.js) - Google Analytics