在C版数据结构中,ADT是逃不过的。Java中或C++中大大简化了这种表示,但实质却是没有怎么变的。
下面是复数的表示和相应的操作,希望可以对ADT有更好一些的了解:
//复数的存储表示和相应的操作
typedef struct
{
float Realpart;
float Imagepart;
} Complex;
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.Realpart=C1.Realpart+C2.Realpart;
sum.Imagepart=C1.Imagepart+C2.Imagepart;
return sum;
}
Complex Sub(Complex C1, Complex C2)
{
Complex difference;
difference.Realpart = C1.Realpart - C2.Realpart;
difference.Imagepart = C1.Imagepart - C2.Imagepart;
return difference;
}