什么是抽象数据类型?

在数据结构里,什么是抽象数据类型?请举例说明。谢谢。
2025-02-26 00:14:16
推荐回答(1个)
回答1:

抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。

比如说类 就是 一种抽象数据类型,类是由已有的数据类型 来实现的。

如复数类型:
//在头文件complex.h中定义的复数类
#ifndef _complex_h_
#define _complex_h_
#include
class complex {
public:
complex ( ){ Re = Im = 0; } //不带参数的构造函数
complex ( double r ) { Re = r; Im = 0; } //只置实部的构造函数
complex ( double r, double i ) { Re = r; Im = i; } //分别置实部、虚部的构造函数
double getReal ( ) { return Re; } //取复数实部
double getImag ( ) { return Im; } //取复数虚部
void setReal ( double r ) { Re = r; } //修改复数实部
void setImag ( double i ) { Im = i; } //修改复数虚部
complex& operator = ( complex& ob) { Re = ob.Re; Im = ob.Im; } //复数赋值
complex& operator + ( complex& ob ); //重载函数:复数四则运算
complex& operator – ( complex& ob );
complex& operator * ( complex& ob );
complex& operator / ( complex& ob );
friend ostream& operator << ( ostream& os, complex& c ); //友元函数:重载<<
private:
double Re, Im; //复数的实部与虚部
};
#endif

//复数类complex的相关服务的实现放在C++源文件complex.cpp中
#include
#include
#include “complex.h”
complex& complex :: operator + ( complex & ob ) {
//重载函数:复数加法运算。
complex * result = new complex ( Re + ob.Re, Im + ob.Im );
return *result;
}
complex& complex :: operator – ( complex& ob ) {
//重载函数:复数减法运算
complex * result = new complex ( Re – ob.Re, Im – ob.Im );
return * result;
}
complex& complex :: operator * ( complex& ob ) {
//重载函数:复数乘法运算
complex * result =
new complex ( Re * ob.Re – Im * ob.Im, Im * ob.Re + Re * ob.Im );
return *result;
}
complex& complex :: operator / ( complex& ) {
//重载函数:复数除法运算
double d = ob.Re * ob.Re + ob.Im * ob.Im;
complex * result = new complex ( ( Re * ob.Re + Im * ob.Im ) / d,
( Im * ob. Re – Re * ob.Im ) / d );
return * result;
}
friend ostream& operator << ( ostream& os, complex & ob ) {
//友元函数:重载<<,将复数ob输出到输出流对象os中。
return os << ob.Re << ( ob.Im >= 0.0 ) ? “+” : “-” << fabs ( ob.Im ) << “i”;
}