数据结构课程设计汇总Word文档下载推荐.docx

上传人:b****0 文档编号:13218284 上传时间:2022-10-08 格式:DOCX 页数:13 大小:19.26KB
下载 相关 举报
数据结构课程设计汇总Word文档下载推荐.docx_第1页
第1页 / 共13页
数据结构课程设计汇总Word文档下载推荐.docx_第2页
第2页 / 共13页
数据结构课程设计汇总Word文档下载推荐.docx_第3页
第3页 / 共13页
数据结构课程设计汇总Word文档下载推荐.docx_第4页
第4页 / 共13页
数据结构课程设计汇总Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据结构课程设计汇总Word文档下载推荐.docx

《数据结构课程设计汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计汇总Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

数据结构课程设计汇总Word文档下载推荐.docx

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

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

16

/1

ADTOrderedList{

数据对象:

D={ai|ai∈int,i=1,2,...n,n≥0}

基本操作:

init(&

a,digit4)

操作结果:

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

pass(&

a,&

b,&

c)

初始条件:

a,b,c都已存在

c等于a和b的和。

nep(&

a)

a已存在。

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

printlong(&

初始条件:

按四位一组,分隔符为?

的格式,在屏幕上输出a。

ston(&

S,&

a)初始条件:

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

}ADTOrderedList

2.本程序包含两个模块:

1)主程序模块:

Voidmain(){

选择操作:

1:

帮助。

2:

加法。

3:

减法。

/2

4:

乘法。

5:

除法。

6:

退出。

打印结果;

}

三、详细设计

1.元素类型,结点类型,指针类型

#defineNULL0

#include<

stdio.h>

stdlib.h>

conio.h>

typedefstructlongnode{/*每个节点的结构*/

intnum;

/*数字*/

/*指向低一位节点*/

structlongnode*low1;

structlongnode*high1;

/*指向高一位节点*/

}longnode;

typedefstructxlong{/*每个长整数的结构*/

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

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

longnode*Low;

intdigit4;

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

}*xlong;

intinit(xlong*a,intdigit4){

/3

intI;

/*.init.*/

longnode*j;

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

/*为a的头结构申请空间,并赋初始值*/

(*a)>

High=NULL;

(*a)->

Low=NULL;

(*a)->

digit4=0;

for(i=0;

i<

digit4;

i++){/*申请digit4个节点,初始化*/

j=(longnode*)malloc(sizeof(longnode));

j->

num=0;

high1=NULL;

j->

low1=(*a)->

High;

if((*a)->

High)(*a)->

High->

high1=j;

else

Low=j;

High=j;

digit4++;

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->

num>

9999){

/4

cf=1;

/*如果产生进位(借位)*/

c1->

num-=10000;

}else{cf=0;

a1=a1->

high1;

b1=b1->

c1=c1->

returncf;

/*最高位的进位(借位)*/

intpassa(xlonga,xlongb,xlongc){

*//*两个数字的相减intcf=0;

longnode*a1=a->

num-b1->

num-cf;

借位if(c1->

9999){cf=1;

/*如果产生进位()*/

c1->

}

)*/(最高位的进位/*returncf;

借位}

intpassb(xlonga,xlongb,xlongc){

*/两个数字的相乘intcf=0;

/*

longnode

*a1=a->

/5

num*b1->

num*cf;

9999){cf=1;

num=10000;

intpassc(xlonga,xlongb,xlongc){

*/intcf=0;

/*两个数字的相除

while(a1){c1->

num/b1->

num/cf;

}}}else{cf=0;

returncf;

*/

的相反数求/*nep(xlonga){a/*因为求相反数是取反加一,所以这里intcf=1;

cf=1;

*/

/6

while(a1)

{a1->

num=9999-(a1->

num)+cf;

if(a1->

9999){a1->

else{cf=0;

}a1=a1->

return;

printlong(xlonga){

a*/longnode*i=a->

/*打印长整数

if(i->

=5000){

*/表示负数,即用补码表示printf(-);

/*最高位(bit)=1*/

/*求反打印其绝对值nep(a);

}while(i&

&

i->

num==0)i=i->

low1;

/*跳过最位的0*/

if(i){printf(%d,i->

num);

i=i->

);

”“,if(i)printf(

}elseprintf(“0*/打0”);

/*a=0

while(i){printf(d,i->

if(i->

low1)

printf(,);

i=i->

}}

/7

intston(charin[],xlongout){/*把字符串转化为数字赋给a*/

intbit,i,jishu=1,num0=0;

longnode*j=out->

i=strlen(in)-1;

while(i>

=0&

j){

/*循环每一个字节*/

bit=in[i]-‘0'

;

/*把字符形式的值赋给整数形式的bit*/

if(bit>

bit<

=9){num0+=jishu*bit;

/*加进num0*/

jishu*=10;

/*基数自乘10*/

if(jishu>

1&

(jishu>

=10000||bit<

0||bit>

9)){/*数字以外的字符*/

num=num0;

j=j->

/*存入一个节点*/

num0=0;

jishu=1;

i--;

if(num0)

{j->

}/*把最后一个没存入节点的数存入节点

for(;

j;

high1)j->

/*最位不足补0*/

if(out->

=5000)

return1;

/*如果最高位是1,返回1表示出*/

if(in[0]=='

-'

)nep(out);

/*如果最后一个字符是'

-'

则取反*/return0;

/8

intadd(){char*a1,*b1;

/*加*/

intdigit4,cf=0;

xlonga,b,c;

do{printf(Howmuchdigitsdoyouneed?

/*输入最多位数*/

scanf(%d,&

digit4);

}while(digit4<

=0);

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

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

digit4=digit4/4+1;

a,digit4);

init(&

b,digit4);

c,digit4);

/*初始化a,b,c*/

do{cf=0;

printf(Enter2number:

\n);

scanf(%s,a1);

printf(+\n);

scanf(%s,b1);

cf|=ston(a1,a);

cf|=ston(b1,b);

*/,如果转换出错,则重输输入被加数和加

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

当前位置:首页 > 初中教育

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

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