如果您无法下载资料,请参考说明:
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;}}}}/*头文件,包括长整数数据结构的定义,成员函数的