-
基本要求
用C++语言编写,利用双循环链表作为存储结构模拟过程。每一个结点包含一个四位十进制整型数字。输入和输出形式:按长整数的表示习惯,每四位一组,组间用逗号隔开。
E.g:
"-9999,9999"与"1,0000,0000,0000",加法运算得"9999,0000,0001"
'"1,0000,9999,0001"与"1111,1111",减法运算得"1,0001,0000,0000"
-
设计思路
-
完整代码
#include<iostream>
using namespace std;
/*
* 1.功能:实现两个长整数之间的加减法运算
* 2.方法:采用数据结构中的双循环链表
* 3.步骤:
a.获取两个长整数和使用者运算需求 标记正负关系与长度
b.判断正负关系决定运算方式 判断大小决定被减数与减数
c.进行加法或减法运算 输出结果并根据情况补零
*/
//结点结构定义
struct DulNode
{
int data;
DulNode* prior;
DulNode* next;
};
//补零 不足四位数时补0
void zero_fill(struct DulNode* p)
{
if (p->data < 10)
{
cout << "000";
}
else
{
if (p->data < 100)
{
cout << "00";
}
else
{
if (p->data < 1000)
{
cout << "0";
}
}
}
}
//输出结果
void show2(struct DulNode* List)
{
DulNode* p;
p = List->next;
cout << "运算结果是:" << endl;
if (List->data == 1)//判断结果正负 头结点 1负0正
{
cout << "-";
}
while (p->data == 0)//判断最高位是否需要消零
{
p = p->next;
if (p == List)
{
p = List->prior;
break;
}
}
cout << p->data;//输出最高位
if (p->next != List)//结果最低位不输出逗号
{
cout << ",";
}
p = p->next;
while (p != List)//遍历输出
{
zero_fill(p);//补零

最低0.47元/天 解锁文章
1518

被折叠的 条评论
为什么被折叠?



