根据给定文件的部分内容,我们可以总结出以下几个关键的知识点:
### 1. 数据与信息的关系
- **信息**:广义上指一切消息,是宇宙三大基本要素之一(物质、能量、信息)。信息是现实世界各种事物在人们头脑中的反映。信息具有多种特征,如可识别、可存储、可变换、可处理、可传递、可再生、可压缩、可利用、可共享。
- **数据**:数据是信息的载体,用于描述客观事物,是所有能输入到计算机中并被计算机程序识别和处理的符号集合。由于信息的表现形式非常多样,许多信息难以直接在计算机中进行存储和处理,因此需要将其转换为数据形式。
### 2. 数据结构的概念及其组成
- **数据结构**:数据结构指的是数据及其相互之间的关系,可以用公式表示为:数据结构 = {D, R}。其中 D 表示某一数据对象,R 表示该对象中所有数据成员之间的关系的有限集合。
- **讨论的三个方面**:
- 数据成员及其逻辑关系(数据的逻辑结构),即数据元素之间的逻辑联系,独立于计算机存储。
- 数据成员及其关系在计算机存储器内的存储表示(数据的物理结构),关注数据如何在计算机内存中实际存放。
- 对数据结构执行的操作,如搜索、插入、删除等。
### 3. 数据的逻辑结构分类
- **线性结构**:数据成员都处于一个序列中,每个成员至多只有一个直接前驱和一个直接后继。例子包括数组、链表、栈、队列等。
- **非线性结构**:数据成员可能有零个、一个或多个直接前驱和直接后继。典型代表有树结构、图结构等。
### 4. 抽象数据类型(ADT)
- **概念**:抽象数据类型是由用户定义的数据模型,用于表示应用问题中的数据。它由基本数据类型构成,并包含一组相关服务。
- **C++中的复数抽象数据类型实现**:
- 使用C++的`class`定义复数类,包含实部和虚部。
- 提供了不同的构造函数以适应不同的初始化需求。
- 实现了获取和修改复数实部和虚部的方法。
- 定义了复数的加法、减法等运算符重载。
- 实现了输出复数的重载流函数。
### 示例代码
```cpp
// 在头文件complex.h中定义的复数类
#ifndef COMPLEX_H_
#define COMPLEX_H_
#include <iostream>
class Complex {
public:
// 不带参数的构造函数
Complex() : Re(0), Im(0) {}
// 只置实部的构造函数
Complex(double r) : Re(r), Im(0) {}
// 分别置实部、虚部的构造函数
Complex(double r, double i) : Re(r), Im(i) {}
// 获取复数实部
double getReal() const { return Re; }
// 获取复数虚部
double getImag() const { return Im; }
// 修改复数实部
void setReal(double r) { Re = r; }
// 修改复数虚部
void setImag(double i) { Im = i; }
// 复数赋值
Complex& operator=(const Complex& ob) {
Re = ob.Re;
Im = ob.Im;
return *this;
}
// 复数加法
Complex operator+(const Complex& ob) const {
return Complex(Re + ob.Re, Im + ob.Im);
}
private:
double Re; // 实部
double Im; // 虚部
};
// 输出复数
std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << c.getReal() << " + " << c.getImag() << "i";
return os;
}
#endif // COMPLEX_H_
```
这段代码展示了如何使用C++实现复数的抽象数据类型,包括构造函数、成员方法、运算符重载等功能。通过这种方式,可以方便地创建和操作复数对象。