抽象数据类型可以通过固有的数据类型(如整型,实型,字符型等)来表示和实现。即利用处理器中已经存在的数据类型来说明新的数据结构,用已经实现的操作来组合新的操作。
例:计算两个复数的加减;
#include<stdio.h>
typedef struct //复数类型
{
float Realpart; //实部
float Imagepart; //虚部
}Complex;
Complex Create(float x, float y)
{ //构造一个复数
Complex C;
C.Realpart = x;
C.Imagepart = y;
return C;
}
Complex Add(Complex C1, Complex C2)
{ //求两个复数的和sum
Complex sum;
sum.Imagepart = C1.Imagepart + C2.Imagepart;
sum.Realpart = C1.Realpart + C2.Realpart;
return sum;
}
Complex Sub(Complex C1, Complex C2)
{ //求两个复数的差Sub
Complex difference;
difference.Imagepart = C1.Imagepart - C2.Imagepart;
difference.Realpart = C1.Realpart - C2.Realpart;
return difference;
}
int main()
{
Complex C1, C2, C;
float x1,y1,x2,y2;
char op;
printf("请输入两个复数\n");
scanf("%f%fi%c%f%fi", &x1, &y1, &op, &x2, &y2);
C1 = Create(x1, y1);
C2 = Create(x2, y2);
switch(op)
{
case'+': C = Add(C1, C2);break;
case'-': C = Sub(C1, C2);break;
}
if(C.Imagepart < 0) printf("%.2f %.2fi", C.Realpart, C.Imagepart);//如果结果是实部-虚部,不对输出进行操作。
else printf("%.2f + %.2fi", C.Realpart, C.Imagepart);//如果结果是实部+虚部,需要在虚部前加+;
}
文章借鉴:《数据结构》(C语言版)(第二版)人民邮电出版社;青岛大学–王卓老师