一、数字储存的实现
大数计算的因数和结果精度一般是少则数十位,多则几万位。在C/C++语言中定义的类型中精度最多只有二十多位,因而我们采取用链表存贮的方式来存放大数。在计算中会用到从高位开始计算,和从低位开始计算数值的两种情况。所以我们将链表定义为双向链表,其中为一个单元来存贮数据,一个指针指向前方的数据,另一个指向后的数据。其结构为:
struct Node // 定义一个双向链表用来存贮结果
{ char data; // 数据*定义为字符的原因:要显示负号
Node *next; // 尾指针
Node *ahead; // 首指针
};
二、大数加法运算的实现
处理中注意的问题:
1、必须判断出操作数A、B的长度,以位长的一个作为循环基础。
2、最后一位(最高位)的运算中,若进位不为0,则需增设多一个存储结点。
三、减法运算的实现
算法也是从低位开始减。先要判断减数和被减数那一个位数长,减数位数长是正常减;被减数位数长,则被减数减减数,最后还要加上负号;两数位数长度