一?/p>
需求分?/p>
设计一个实现任意长的整数间进行四则运算的程序,要求完成长整数的加?/p>
减运算,乘除运算可选做。在这里长整数没有范围限制,可任意长。运算后的进
位、借位等都要进行正确处理,可实现动态的输入,实时的输出?/p>
测试数据?/p>
0
?/p>
0
?/p>
输出?/p>
0
?/p>
2345
?/p>
6789
?/p>
-7654
?/p>
3211
?/p>
输出?/p>
1
?/p>
0000
?/p>
0000
?/p>
1
?/p>
0000
?/p>
0000
?/p>
0000
?/p>
9999
?/p>
9999
?/p>
输出
?/p>
9999
?/p>
0000
?/p>
0001
?/p>
1
?/p>
0001
?/p>
0001
?/p>
?/p>
1
?/p>
0001
?/p>
0001
?/p>
输出?/p>
0
?/p>
自选数据:
1
?/p>
1111
?/p>
1
?/p>
1111
输出?/p>
0
?/p>
二?/p>
概要设计
1
?/p>
数据结构
利用双向循环链表来实现对长整数的存储?/p>
选择该数据结构来完成长整数的加减运算是因?/p>
a.
要对长整数进行运算,
需要对长整数进行存储,
选择用链表对长整数存储?/p>
b.
存储的顺序是从左到右?/p>
运算的顺序则是从右到左,
为操作方便选择循环
链表?/p>
c.
在运算过程中有进位和借位的操作?/p>
2
?/p>
使用算法
定义双向循环链表,存储数据,进行计算?/p>
(默认较长的数作为被加数、被
减数?/p>
三?/p>
详细设计
typedef struct DoubleNode //
定义链表元素
void InitNode(DLNode **head) //
初始化链?/p>
int InsertNode(DLNode *head,int n,DataType x) //
向链表第
N
个位置插入元?/p>
X