第一范文网 - 专业文章范例文档资料分享平台

数据结构长整数四则运算

来源:用户分享 时间:2025/7/28 5:27:42 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实习1 1.4长整数四则运算

实习报告

题目:设计一个实现任意长的整数进行加法运算的演示程序。

一、 需求分析

1.本演示程序中,利用双向循环链表实现长整数的存储,每个结点含一个整型变量任何整型变量的范围是-(215-1)—(215-1)。在每个结点中仅存十进制数的4位,即不超过9999的非负整数,整个链表表示为万进制数。输入和输出形式按中国对于长整数的习惯,每四位一组,组间用逗号隔开。

2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入数据中的非法字符)和运算结果显示在其后。 3.程序执行的命令包括:

(1)构造链表;(2)输入数据;(3)数据处理;(4)结束 4.测试数据

(1)0;0;应输出0。

(2)-2345,6789;-7654,3211;应输出-1,0000,0000. (3)-9999,9999;1,0000,0000,0000;应输出9999,0000,0001 (4)1,0001,0001;-1,0001,0001;应输出0。 (5)1,0001,0001;-1,0001,0000;应输出1.

(6)-9999,9999,9999;-9999,9999,9999;应输出-1,9999,9999,9998。 (7)1,0000,9999,9999;1;应输出1,0001,0000,0000。

二、 概要设计

struct LinkNode //定义结构体LinkNode {

int data; //记录每个节点的整数(小于10000) LinkNode *next; //记录下一个节点的地址 LinkNode *pre; //记录前一个节点的地址 };

class LinkList //定义类LinkList

1 / 16

{ private:

LinkNode *head0,*head1; //head0,head1分别记录两个整数链表的头指针 LinkNode *currptr;

LinkNode *result; //result记录结果链表的头指针 public:

LinkList(); //构造函数,初始化链表 ~LinkList(); //析构函数,释放空间

void Creat(string a); //引入字符串,创立两个链表,分别表示两个整数 void Add(); //实现两个整数相加 void Display(); //显示结果

void addtwo(); //节点多的作为被加数,少的作为加数,实现整 //数绝对值

大的加小的

};

void main() //主函数 { …… do{

} while(Yes_No=='y'||Yes_No=='Y'); //Yes_No不等于'Y'或'y'时,程序退出 }

三、详细设计

#include #include #include using namespace std; struct LinkNode {

int data; //记录每个节点的整数(小于10000) LinkNode *next; //记录下一个节点的地址 LinkNode *pre; //记录前一个节点的地址

2 / 16

};

class LinkList { private:

LinkNode *head0,*head1; //head0,head1分别记录两个整数链表的头指针 LinkNode *currptr;

LinkNode *result; //result记录结果链表的头指针 public:

LinkList(); //构造函数,初始化链表 ~LinkList(); //析构函数,释放空间

void Creat(string a); //引入字符串,创立两个链表,分别表示两个整数 void Add(); //实现两个整数相加 void Display(); //显示结果

void addtwo(); //节点多的作为被加数,少的作为加数,实现整 //数绝对值

大的加小的

};

//链表的实现部分

int sum(int n);

LinkList::LinkList() //构造函数,初始化链表 {

head0=new LinkNode; //申请一个空间记录整数的符号和节点数 head1=new LinkNode; head0->next=head0;

head0->pre=head0; //初始化链表,建立双向循环链表 head1->next=head1; head1->pre=head1;

result=new LinkNode;

3 / 16

result->next=result; result->pre=result; currptr=NULL; }

LinkList::~LinkList() //析构函数,释放空间 {

LinkNode *p1=head0,*p2=head1,*p3=result; //三个指针分别指向三条链表的头指针 while(p1!=p1->pre) {

p1->pre->next=p1->next; p1->next->pre=p1->pre; currptr=p1; p1=p1->next; delete currptr; }

while(p2!=p2->pre) //逐个删除节点,释放空间 {

p2->pre->next=p2->next; p2->next->pre=p2->pre; currptr=p2; p2=p2->next; delete currptr; }

while(p3!=p3->pre) {

p3->pre->next=p3->next; p3->next->pre=p3->pre; currptr=p3;

4 / 16

搜索更多关于: 数据结构长整数四则运算 的文档
数据结构长整数四则运算.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7icya3pzqh3x5if1klmb9gaib47vll009i1_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top