数据结构综合设计实验报告Word文件下载.docx
- 文档编号:17411029
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:22
- 大小:523.76KB
数据结构综合设计实验报告Word文件下载.docx
《数据结构综合设计实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构综合设计实验报告Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
-"
thus(a,b,c);
*"
multipy(a,b,c);
/"
division(a,b,c);
system("
pause"
);
}
5.2主要模块流程图
首先线性表基本函数
#include<
iostream>
usingnamespacestd;
constintmaxsize=1000;
typedefcharelemtype;
structlist{
elemtype*a;
intsize;
};
voidinit(list&
m){
m.a=newelemtype[maxsize];
m.size=0;
}
voidcreate(list&
请输入一个长整数:
cin>
>
m.a;
m.size=strlen(m.a);
intgetsize(listm){
returnm.size;
boolempty(listm){
returnm.size==0;
voiddisplay(listm){
for(inti=0;
i<
m.size;
i++)
m.a[i];
endl;
}用于下面计算的基础函数
voidreverse(list&
m.size/2;
{elemtypet=m.a[i];
m.a[i]=m.a[m.size-i-1];
m.a[m.size-i-1]=t;
boolcompare(lista,listb){
if(a.size>
=b.size)returntrue;
returnfalse;
voidcopy(list&
a,listb){
a.size=b.size;
b.size;
a.a[i]=b.a[i];
a.a[a.size]='
\0'
voidclearfirst(list&
a){//用来清除数组前面的0
inti=0,k=0;
boolt=false;
if(a.a[0]!
='
-'
&
a.a[0]!
0'
)return;
elseif(a.a[0]=='
){
i=1;
t=true;
for(;
a.size;
if(a.a[i]=='
)k++;
elsebreak;
listb;
copy(b,a);
b.a[b.size]='
a.size=b.size-k;
if(t==false){//t为false时,说明a为正
for(inttz=0;
tz<
tz++)
a.a[tz]=b.a[tz+k];
else{
a.a[0]='
a.a[tz+1]=b.a[k+tz+1];
a.a[a.size]=='
}voidch(list&
a,intx){//乘以10相当于移位
x;
a.a[a.size+i]='
a.size=a.size+x;
a.a[a.size]=0;
m){//倒置
1大整数加法
voidadd(lista,listb,list&
c){//加法
//if(!
empty(c)){reverse(c);
reverse(a);
reverse(b);
inti,k,flag=0,sun;
if(compare(a,b)){
c.size=a.size;
for(i=0;
i++){
sun=a.a[i]-'
+b.a[i]-'
+flag;
if(sun>
=10){flag=sun/10;
sun%=10;
elseflag=0;
c.a[i]=sun+'
for(i=b.size;
i++){
sun=b.a[i]-'
if(flag!
=0){c.a[c.size++]='
flag=0;
c.size=b.size;
for(i=a.size;
c.a[c.size]='
reverse(c);
减法
voidthus(listwg,listtg,list&
c){//减法
boolzf=true;
lista,b;
//创建临时a,b用于操作
copy(a,wg);
copy(b,tg);
if(strlen(a.a)>
strlen(b.a))//大数减小数
{
reverse(a);
strlen(b.a);
{a.a[i]-=flag/10;
if(a.a[i]<
b.a[i])flag=10;
elseflag=0;
sun=a.a[i]-b.a[i]+flag+'
c.a[i]=sun;
for(i=strlen(b.a);
strlen(a.a);
flag=0;
c.a[i]=a.a[i];
c.size=i;
c.a[i]='
elseif(strlen(a.a)==strlen(b.a))//位数相等
intw;
booltf=false;
for(w=0;
w<
w++)
if(a.a[w]<
b.a[w]){tf=false;
break;
elseif(a.a[w]==b.a[w])continue;
else{tf=true;
break;
if(tf==true&
w<
a.size)//if(w>
=a.size&
d!
=a.size)//位数相等,大数减小数
{
for(i=0;
elseif(w>
=a.size){
init(c);
c.size=1;
c.a[0]='
c.a[c.size]='
return;
else//位数相等,小数减大数
{b.a[i]-=flag/10;
if(a.a[i]>
sun=b.a[i]-a.a[i]+flag+'
for(i=strlen(a.a);
c.a[i]=b.a[i];
zf=false;
elseif(strlen(a.a)<
strlen(b.a)){
reverse(c);
if(zf==false){//符号判断
listm;
init(m);
copy(m,c);
c.size=m.size+1;
c.a[0]='
c.a[i+1]=m.a[i];
c.a[i+1]='
clearfirst(c);
voidmultipy(listwg,listtg,list&
c){//乘法
for(intm=0;
m<
strlen(a.a)+strlen(b.a);
m++)
c.a[m]='
c.size=strlen(a.a)+strlen(b.a);
inti,k,sum,flag=0;
++i){
if(b.a[i]=='
)continue;
sum=0;
for(k=0;
k<
++k){
sum+=(a.a[k]-'
)*(b.a[i]-'
)+(c.a[k+i]-'
c.a[k+i]=sum%10+'
//进位计算
sum/=10;
flag=sum;
c.a[strlen(a.a)+i]+=sum;
除法
voiddivision(listwg,listtg,list&
c){//除法
inti,j;
listt,v,k,m;
if(empty(b)||empty(a))return;
if(strlen(a.a)==strlen(b.a)){//如果a和b长度相等
9;
{init(k);
//
thus(a,b,k);
if(k.a[0]!
){
init(a);
copy(a,k);
continue;
c.size=1;
c.a[0]=i+'
strlen(b.a)){//如果a比b小
return;
elseif(strlen(a.a)>
strlen(b.a)){//如果a比b大
intqwt=strlen(a.a)-strlen(b.a);
for(j=0;
j<
=qwt;
j++){
intgrf=0;
thus(a,b,m);
if(m.a[0]=='
)grf++;
init(v);
copy(v,b);
ch(v,qwt-j-grf);
{init(k);
thus(a,v,k);
if(k.a[0]!
elsebreak;
c.a[j]=i+'
c.size++;
if(strlen(a.a)==strlen(b.a)){
if(j<
qwt){
c.a[c.size]=i+'
c.size++;
clearfirst(c);
5.3测试例子
测试实例
普通加法
加法进位
等位加法
等位减法
大数减小数
小数减大数
小数乘大数
大数乘小数
大数除小数
等位数相同除法
高位计算
千位级别计算(时间大约1s不到)
算法性能优良
接上面
5.4设计中碰到的问题,如何解决
实验过程中多次碰到数组空间内存溢出的问题,除法运算效率问题,还有计算过程中算法重利用不高的问题,我多次实验,并通过完善,通过分模块执行代码进行整合,最终解决了一些已知的问题。
6、实验结果和心得体会
通过这次综合设计,我对数组了解更深刻了,同时对内存空间的结构也更加深刻了,在实践能力上得到很大的提高,同时也了解了线性表的结构与功能!
在千位级别的计算过程中由于受到数组输入的限制,无法测试
由于无法和string比较,所以string性能未知!
算法性能优良,
在1024位乘以1024位,计算过程中,由于受到程序的限制,内存最多能够读入大小限制,不能实现1000-2000位的计算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 综合 设计 实验 报告