java数据结构之顺序表应用之大整数求和

原创 2016年06月01日 22:29:22

本章讲顺序表的应用之大整数求和。java中int,long,float,double都有他们自己的精度值,如果超过精度就没办法进行运算了。这里可以用顺序表进行大整数运算。

下面上代码看具体案例,进行解析:

package SequenceList;
public class LargeIntegerSum {
	public int[] add(int aa[],int bb[]){
		int[] a=new int[aa.length];
		int[] b=new int[bb.length];
		for(int j=aa.length-1;j>=0;j--){
			a[aa.length-1-j]=aa[j];
		}
		for(int j=bb.length-1;j>=0;j--){
			b[bb.length-1-j]=bb[j];
		}
		int a_length=a.length;
		int b_length=b.length;
		int c_length=0;
		if(a_length>b_length){
			c_length=a_length;
		}else{
			c_length=b_length;
		}
		int[] c=new int[c_length];
		int flag=0;
		int i=0;
		while(i<a_length && i<b_length){
			c[i]=(a[i]+b[i]+flag)%10;
			flag=(a[i]+b[i]+flag)/10;
			i++;
		}
		for(;i<a_length;i++){
			c[i]=(a[i]+flag)%10;
			flag=(a[i]+flag)/10;
		}
		for(;i<b_length;i++){
			c[i]=(b[i]+flag)%10;
			flag=(b[i]+flag)/10;
		}
		if(flag==1){
			int[] temp=c;
			c=new int[c_length+1];
			for(int ii=0;ii<temp.length;ii++){
				c[ii]=temp[ii];
			}
			c[c.length-1]=1;
		}
		int cc[]=new int[c.length];
		for(int j=cc.length-1;j>=0;j--){
			cc[cc.length-1-j]=c[j];
		}
		return cc;
	}
	public static void main(String[] args) {
		LargeIntegerSum l=new LargeIntegerSum();
		int a[]={9,2,3};
		int b[]={9,1,9};
		int[] c=l.add(a, b);
		for(Integer i:c){
			System.out.print(i);
		}
		System.out.println();
	}
}
本案例是通过数组来存储大整数的,可以运算特别大的加法运算。

如果有什么不清楚或者有啥疑问意见可以加我QQ/微信  208017534  / qiang220316,欢迎一起交流一起进步。



版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhiqiang0316/article/details/51559624

大数据应用开发之数据清洗开胃、生产、实操

-
  • 1970年01月01日 08:00

线性表之大整数求和

用某种程序设计语言进京
  • kaitankedemao
  • kaitankedemao
  • 2014-04-16 21:58:19
  • 1963

数据结构 第二章 顺序表应用举例——大整数求和

一、问题描述 C/C++语言中的int类型能表示的整数范围是-2^31~2^31-1,unsigned int类型能表示的整数范围是0~2^32-1,即0~4 294 967 295,所以,int和...
  • qwertyuiop2216210
  • qwertyuiop2216210
  • 2014-10-19 21:50:41
  • 4069

大整数求和

*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Wo...
  • vcx08
  • vcx08
  • 2016-09-09 21:28:42
  • 590

第二章作业题1-顺序表

一、判断题 1-1 对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 T1-2 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运...
  • GoneWithTheWind_yin
  • GoneWithTheWind_yin
  • 2017-12-07 18:36:57
  • 681

给出两个表示两个非负整数的非空链表。数字以相反的顺序存储,它们的每个节点都包含一个数字。添加两个数字,并将其作为链接列表返回。

链表定义: public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }具体实现代码如...
  • qq297877375
  • qq297877375
  • 2018-01-22 21:50:17
  • 407

lintcode(221)链表求和 II

Description: 假定用一个链表表示两个数,其中每个节点仅包含一个数字。假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。 Explanation: ...
  • sunday0904
  • sunday0904
  • 2017-05-21 16:24:25
  • 1038

【LeetCode2 Add Two Numbers】链表求和详解

一、问题描述 给定两个非空链表,其中链表中的每一个节点都是一个十以内的数字,链表的倒序数字串代表相应的十进制数值,因此每一个链表都会对应一个数值。题目中给定两个链表,需要求出其数值和,并将该数值和也...
  • codekiller_
  • codekiller_
  • 2017-06-10 20:51:28
  • 367

数据结构(3)--线性表实现一元多项式加法

1.简要说明     一元多项式的表示和相加     多项式Pn(x)按升幂可写成:                 Pn(x) = P0+P1*x+p2*x^2+...+Pn*x^n,     它由...
  • u010366748
  • u010366748
  • 2016-02-05 00:00:38
  • 9197

定义一个函数,在该函数中可以实现任意两个整数的加法。java实现

这道题实际上是一道面试题的拓展,原题是要求打印1到最大的n位数。原题是这样描述的:输入数字n,按顺序打印出1到最大的n位十进制数。比如输入3,则打印出1,2,3,4,5一直到最大的三位数999。拿到这...
  • u012062455
  • u012062455
  • 2015-12-30 14:50:48
  • 3646
收藏助手
不良信息举报
您举报文章:java数据结构之顺序表应用之大整数求和
举报原因:
原因补充:

(最多只允许输入30个字)