数据结构——抽象数据类型的表现与实现

抽象数据类型

下面这个例子是关于复数的一个抽象数据类型(Abstract Data Type,ADT)。所谓抽象数据类型,由三部分构成:

  • 数据对象:c1
  • 数据关系:x是c1的实部,y是c1的虚部
  • 基本操作:求实部、求虚部、求和、求差
#include <stdio.h>

//Complex类型定义 
typedef struct{
	float Realpart;
	float Imagepart;
}Complex;

//函数声明 
void Create(Complex &C, float x, float y);
float GetReal(Complex C);
float GetImage(Complex C);
Complex Add(Complex C1,Complex c2);
Complex Sub(Complex C1,Complex c2);

//主函数 
int main()
{
	Complex c1;
	float x,y;
	x = 1;
	y = -1;

	Create(c1,x,y); 
	printf("实部为:%f\n",c1.Realpart);
	printf("虚部为:%f\n",GetImage(c1)); 
	
	
	return 0;
}

//函数定义 
void Create(Complex &C, float x, float y)
{
	C.Realpart = x;
	C.Imagepart = y;
} 
float GetReal(Complex C)
{
	return C.Realpart;
}
float GetImage(Complex C)
{
	return C.Imagepart;
}
Complex Add(Complex C1,Complex C2)
{
	Complex sum;
	sum.Imagepart = C1.Imagepart + C2.Imagepart;
	sum.Realpart = C1.Realpart+ C2.Realpart;
	return sum;
}
Complex Sub(Complex C1,Complex C2)
{
	Complex difference;
	difference.Imagepart = C1.Imagepart - C2.Imagepart;
	difference.Realpart = C1.Realpart - C2.Realpart;
	return difference;
}

Q1:为什么Create定义时C前面要加&?&在这什么意思?
这里&是引用,引用是C++的用法,是给一个变量起了别名。使用引用的方式传入参数,能够使函数执行完能返回值。这和传入指针很像
写成Complex &C后,执行Create(c1,x,y)相当于给c1起了别名C,从而对C的操作就是对c1的操作,而如果写成Complex C,C作为一个形参,函数执行完C就不存在了,而c1不会有任何变化。[详细解释click here]

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值