首页 > 代码库 > 无限大数 相加-,可以方便的改为相减,相乘

无限大数 相加-,可以方便的改为相减,相乘

大数结构,tag 中可以放(正负号)

wei可以放长度

num放 一位的数值

next 放下一位(更高的一位)


public  class BigNum{

boolean tag = true;

int num = 0;

int wei= 1;

BigNum next;

}


public class shuju {


public static void main(String[] args) {

// TODO Auto-generated method stub

BigNum a = new BigNum();

getDemo(a);

System.out.println("---------a------------------");

out(a);

BigNum b = new BigNum();

getDemo(b);

System.out.println("-----------b---------------");

out(b);

BigNum bigNum = add(a, b);

System.out.println("-----------------------------");

out(bigNum);


}






private static void out(BigNum bigNum) {

for(BigNum t = bigNum.next;t != null;){

System.out.print(t.num);

t = t.next;

}

}

static BigNum add(BigNum a, BigNum b){

BigNum result = new BigNum();

BigNum temp = result;

for(;(a != null || b!= null);){

if(a == null){

add1(temp, 0, b.num);

}

if(b == null){

add1(temp, 0, a.num);

}else{

add1(temp, a.num, b.num);

a= a.next;

b= b.next;

}

if(temp.next == null){

temp.next = new BigNum();

}

temp = temp.next;

}

return result;

}

public static void add1(BigNum a, int n, int m){

if(a.next == null){

a.next = new BigNum();

}

 

int tem = 0;

 

tem = n + m + a.num;

a.num = tem %10;

 

if(tem /10 >0){

add1(a.next, 1, a.next.num);

 

}

}

面试的时候不一定是你是否理解,也要看面试你的人是否理解你,因为一般的算法都不是随手可以在纸上搞定的,毕竟不能回退不是吗,






无限大数 相加-,可以方便的改为相减,相乘