作业帮 > 综合 > 作业

"写ADT,并说明函数功能、入口参数、出口参数"?这里入出口参数指什么?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 13:17:10
"写ADT,并说明函数功能、入口参数、出口参数"?这里入出口参数指什么?
最好举例说明
ADT定义:一个ADT是一个仅由保存的数据类型和可能在这个数据类型上进行的操作定义的.开发者们只能通过ADT的操作方法来访问ADT的属性,而且他们不会知道这个数据类型内部各种操作是如何实现的.
那么访问ADT就需要出入口参数了,就是你定义的访问该数据属性的参量和返回参量.
ADT定义:
ADT 抽象数据类型名{
数据对象:(数据元素集合)
数据关系:(数据关系二元组结合)
基本操作:(操作函数的罗列)
} ADT 抽象数据类型名;
这是一段C定义ADT的程序段:
抽象数据类型复数的定义
ADT Complex {
数据对象:D={e1,e2|e1,e2∈RealSet }
数据关系:R1={ | e1是复数的实数部分,e2 是复数的虚数部分 }
基本操作:
InitComplex( &Z, v1, v2 )
操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和v2的值.
DestroyComplex( &Z)
操作结果:复数Z被销毁.
GetReal( Z, &realPart )
初始条件:复数已存在.
操作结果:用realPart返回复数Z的实部值.
GetImag( Z, &ImagPart )
初始条件:复数已存在.
操作结果:用ImagPart返回复数Z的虚部值.
Add( z1,z2, &Sun )
初始条件:z1, z2是复数.
操作结果:用sum返回两个复数z1、z2的和值.
} ADT Complex
比如最后一个complex->add(z1,z2,&Sun),你要完成它的功能函数就是:
Complex *add(Complex *pZ1, Complex *pZ2)
{
Complex *pSum = (Complex *)malloc(sizeof(Complex));
if ( pSum==NULL )
return NULL;
pSum->realpart = pZ1->realpart + pZ2->realpart;
pSum->imagpart = pZ1->imagpart + pZ2->imagpart;
return pSum;
}
这两个形参就是入口参数:Complex *pZ1, Complex *pZ2
return pSum;中的pSum就是出口参数.
明白了吧,写ADT的功能函数能极大地促进人的c语言水平,尤其是你写数据结构的链、栈、堆和查找、删除、插入.能有的算法技巧其实都用了.