如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
/NUMPAGES14
实验题目:设计一数据结构可处理任意长度的整数
概要设计
1.数据结构的定义
采用双向链表存储任意长整数。双向链表的定义如下:
classDblList{
private:
DblNode*head,*tail;
DblNode*current;
intsign;
public:
DblList();//构造函数
~DblList();//析构函数
boolCreatList(string);//生成一个双向链表,存储整数
intGetCount();//获取整数的长度
voidInsert(DblNode*);//从表尾插入一个结点
voidInsertFront(DblNode*);//从表头插入
voidClear();//去除该链表
voidoperator+(DblList&);//实现两个任意整数的加法
voidoperator*(DblList&);//实现两个任意整数的乘法
DblList&operator=(DblList&);//重载赋值运算符
intCompare(DblList&);//两个整数的绝对值比拟
voidDisplay();//任意长度整数的标准化输出
};
说明:数据的存储,无外乎顺序或者链表。顺序存储时,定义数组无法实现任意长度,而且需要预设一个maxsize,不是特别的方便。所以采用链式存储方式。而且任意长数据通过字符串输入。在链表的每一个结点中,数据域是在该数位上的数字大小。
主要功能模块的功能
任意长整数的输入
任意长整数的标准化输出
两个整数的加法
两个整数的乘法
三.详细设计〔主模块流程图〕
使用说明与测试结果
1.使用说明:
点击打开应用程序pro1.exe。依次输入任意两个整数〔例如123456,+1234567〕,按回车,会出现菜单,如下列图:
按‘1’那么实现两整数的加法
按‘2’那么实现两整数的乘法
按‘#’完毕
注:菜单可重复出现直至‘#’退出。
实现加法,乘法如下列图:
2.测试结果:
(1)123456
(2)+1234567
(3)-987654321
(4)12a3
+
注:当输入错误时,允许重新输入。
源程序
/*主函数*/
/***************************************************/
#include"cal.h"
voidmain(){
strings;
stringp;
DblListlist1;
while(1){//输入错误时,允许重新输入
cout<<"Inputnum1"<<endl;
cin>>s;
boolok1=list1.CreatList(s);
if(!ok1)
{
cout<<"error!"<<endl;
}
else{
cout<<"num1:";
list1.Display();
break;
}
}
DblListlist2;
while(1){
cout<<"Inputnum2:"<<endl;
cin>>p;
boolok2=list2.CreatList(p);
if(!ok2)
{
cout<<"error!"<<endl;
}
else{
cout<<"num2:";
list2.Display();
break;
}
}
stringchoose;
while(1)
{
cout<<"请选择运算法:"<<endl;
cout<<"--------------------------"<<endl;/*菜单*/
cout<<"|1.num1+num2|"<<endl;/*可以重复输入运算符,按'#'退出*/
cout<<"|2.num1*num2|"<<endl;
cout<<"|#.exit|"<<endl;
cout<<"--------------------------"<<endl;
while(1)
{
cin>>choose;
if(choose=="1")
{
list1+list2;
break;
}
elseif(choose=="2")
{
list1*list2;
break;
}
elseif(choose=="#")
{
return;
}
else
{
cout<<"输入有误,请重新输入!!"<<endl;
continue;
}
}
}
}
/*头文件,包括长整数数据结构的定义,成员函数的
17****21
实名认证
内容提供者
最近下载