数据结构实习报告PPT课件下载推荐.ppt

上传人:b****2 文档编号:15560721 上传时间:2022-11-05 格式:PPT 页数:40 大小:333.50KB
下载 相关 举报
数据结构实习报告PPT课件下载推荐.ppt_第1页
第1页 / 共40页
数据结构实习报告PPT课件下载推荐.ppt_第2页
第2页 / 共40页
数据结构实习报告PPT课件下载推荐.ppt_第3页
第3页 / 共40页
数据结构实习报告PPT课件下载推荐.ppt_第4页
第4页 / 共40页
数据结构实习报告PPT课件下载推荐.ppt_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

数据结构实习报告PPT课件下载推荐.ppt

《数据结构实习报告PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《数据结构实习报告PPT课件下载推荐.ppt(40页珍藏版)》请在冰豆网上搜索。

数据结构实习报告PPT课件下载推荐.ppt

-1,0001,0001;

|(5)1,0001,0001;

输出“1”;

4一、需求分析|(6)-9999,9999,9999;

-9999,9999,9999;

输出“-1,9999,9999,9998”;

|(7)1,0000,9999,9999;

1;

输出1,0001,0000,0000.5二、概要设计|为实现上述程序功能,应以双向循环链表表示长整数。

为此,需要定义一个抽象数据类型。

|1.抽象数据类型定义为:

ADTOrderedList数据对象:

D=ai|aiint,i=1,2,.n,n06二、概要设计|基本操作:

init(&

a,digit4)|操作结果:

构造一个位数是digit4*4长整数。

pass(&

a,&

b,&

c)|初始条件:

a,b,c都已存在|操作结果:

c等于a和b的和。

nep(&

a)|初始条件:

a已存在。

|操作结果:

a变为输入参数的相反数。

7二、概要设计|printlong(&

按四位一组,分隔符为,的格式,在屏幕上输出a。

ston(&

S,&

把字符串形式的长数字赋给a。

ADTOrderedList8二、概要设计|2.本程序包含两个模块:

|1)主程序模块:

|voidmain()|选择操作:

1:

帮助。

|2:

加法。

|3:

减法。

|4:

乘法。

|5:

除法。

|6:

退出。

打印结果;

9三、详细设计|1.元素类型,结点类型,指针类型#defineNULL0|#include|#include|#include|typedefstructlongnode/*每个节点的结构*/intnum;

/*数字*/structlongnode*low1;

/*指向低一位节点*/structlongnode*high1;

/*指向高一位节点*/10三、详细设计|longnode;

|typedefstructxlong/*每个长整数的结构*/longnode*High;

/*每个长整数的最高节点*/longnode*Low;

/*每个长整数的最低节点*/intdigit4;

/*每个长整数的总位数(不包括高位的0)/4*/*xlong;

|intinit(xlong*a,intdigit4)intI;

/*.init.*/11三、详细设计|longnode|*j;

(*a)=(xlong)malloc(sizeof(structxlong);

/*为a的头结构申请空间,并赋初始值*/|(*a)High=NULL;

(*a)Low=NULL;

|(*a)-High=NULL;

(*a)-Low=NULL;

|(*a)-digit4=0for(i=0;

inum=0;

jhigh1=NULL;

j-low1=(*a)-High;

|if(*a)-High)(*a)Highhigh1=j;

|else|(*a)-Low=j;

(*a)-High=j;

(*a)-digit4+;

|13三、详细设计intpass(xlonga,xlongb,xlongc)intcf=0;

/*两个数字的相加*/longnode*a1=a-Low,*b1=b-Low,*c1=c-Low;

while(a1)c1-num=a1-num+b1-num+cf;

if(c1-num9999)cf=1;

/*如果产生进位(借位)*/c1-num-=10000;

elsecf=0;

a1=a1-high1;

b1=b1-high1;

c1=c1-high1;

returncf;

/*最高位的进位(借位)*/14三、详细设计|intpassa(xlonga,xlongb,xlongc)intcf=0;

/*两个数字的相减*/|longnode*a1=a-Low,*b1=b-Low,*c1=c-Low;

while(a1)c1-num=a1-num-b1-num-cf;

|if(c1-num9999)cf=1;

15三、详细设计|a1=a1high1;

b1=b1high1;

/*最高位的进位(借位)*/|intpassb(xlonga,xlongb,xlongc)intcf=0;

/*两个数字的相乘*/longnode*a1=a-Low,*b1=b-Low,*c1=c-Low;

while(a1)c1-num=a1-num*b1-num*cf;

16三、详细设计|elsecf=0;

/*最高位的进位(借位)*/intpassc(xlonga,xlongb,xlongc)intcf=0;

/*两个数字的相除*/longnode*a1=a-Low,*b1=b-Low,*c1=c-Low;

while(a1)c1-num=a1-num/b1-num/cf;

17三、详细设计|elsecf=0;

|a1=a1-high1;

/*最高位的进位(借位)*/|nep(xlonga)/*求a的相反数*/intcf=1;

/*因为求相反数是取反加一,所以这里cf=1;

*/longnode*a1=a-Low;

while(a1)|a1-num=9999-(a1-num)+cf;

18三、详细设计|if(a1-num9999)a1num=10000;

|elsecf=0;

return;

|printlong(xlonga)longnode*i=a-High;

/*打印长整数a*/if(i-num=5000)printf(-);

/*最高位(bit)=1表示负数,即用补码表示*/nep(a);

/*求反打印其绝对值*/while(i&

i-num=0)i=i-low1;

/*跳过最位的0*/if(i)printf(%d,i-num);

i=i-low1;

19三、详细设计|if(i)printf(“,”);

elseprintf(“0”);

/*a=0打0*/|while(i)printf(%04d,i-num);

if(i-low1)printf(,);

|intston(charin,xlongout)/*把字符串转化为数字赋给a*/intbit,i,jishu=1,num0=0;

longnode*j=out-Low;

20三、详细设计|i=strlen(in)-1;

while(i=0&

j)/*循环每一个字节*/bit=ini-0;

/*把字符形式的值赋给整数形式的bit*/if(bit=0&

bit1&

(jishu=10000|bit9)/*数字以外的字符*/j-num=num0;

j=j-high1;

/*存入一个节点*/num0=0;

jishu=1;

21三、详细设计|i-;

|if(num0)j-num=num0;

/*把最后一个没存入节点的数存入节点*/|for(;

j;

j=j-high1)j-num=0;

/*最位不足补0*/if(out-High-num=5000)return1;

/*如果最高位是1,返回1表示出*/if(in0=-)nep(out);

/*如果最后一个字符是则取反*/return0;

|intadd()char*a1,*b1;

/*加*/intdigit4,cf=0;

22三、详细设计|xlonga,b,c;

doprintf(Howmuchdigitsdoyouneed?

);

/*输入最多位数*/scanf(%d,&

digit4);

|while(digit4=0);

a1=(char*)malloc(digit4+1);

b1=(char*)malloc(digit4+1);

digit4=digit4/4+1;

a,digit4);

b,digit4);

c,digit4);

/*初始化a,b,c*/docf=0;

printf(Enter2number:

n);

23三、详细设计|scanf(%s,a1);

printf(+n);

|scanf(%s,b1);

cf|=ston(a1,a);

cf|=ston(b1,b);

|while(cf);

/*输入被加数和加数,如果转换出错,则重输*/|pass(a,b,c);

/*执行相加运算*/printlong(a);

printf(+);

/*打印结果*/printlong(b);

printf(=);

printlong(c);

printf(n);

bioskey(0);

24三、详细设计|intsubtract()/*减*/char*a1,*b1;

intdigit4,cf=0;

xlonga,b,c;

/*输入最多位*/scanf(%d,&

while(digit4=0);

25三、详细设计|init(&

scanf(%s,a1);

printf(-n);

while(cf);

/*输入被减数和减数,如果转换出错,则重输*/passa(a,b,c);

/*执行相减运算*/printlong(a);

printf(-);

/*打印结果*/26三、详细设计|printlong(b);

|intmultiply()/*乘*/char*a1,*b1;

27三、详细设计|while(digit4=0);

|printf(Enter2number:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1