本章的基本内容是
2.1 线性表的逻辑结构
线性表的特性 |
线性表的抽象数据类型 |
数据元素之间的关系是什么?
实生活中,许现多问题抽象出的数据模型是线性表,如何存储种线性结构并实现插入、删除、查找等基本操作呢?
线性表的定义
其中,ai(1≤i≤n)称为数据元素;
下角标 i 表示该元素在线性表中的位置或序号 。
2.2 线性表的顺序存储结构及实现
2.21 线性表的顺序存储结构——顺序表 |
2.22 顺序表的实现; |
1构造函数 |
2求线性表的长度 |
3查找操作 |
4插入操作 |
5删除操作 |
6遍历操作 |
将线性表的抽象数据类型定义在顺序表存储结构下用C++的类型实现。由于线性表的数据元素类型不确定,所以采用C++的模板机制
constintMaxSize=100
template<class DataType> //模板类
classSeqList
{
public:
SeqList( ) ; //构造函数
SeqList(DataType a[ ], int n);
~SeqList( ) ; //析构函数
int Length( );
DataType Get(inti);
int Locate(DataType x );
void Insert(inti, DataType x);
DataType Delete(inti);
private:
DataType data[MaxSize];
int length;
2.3 线性表的链接存储结构及实现
2.31 单链表 |
单链表的存储方法 单链表的实现 |
1遍历操作 |
2求线性表的长度 |
3查找操作 |
4插入操作 |
5构造函数 |
6删除操作 |
7析构函数 |
2.32 循环链表 |
2.33 双链表 |
1插入 |
2删除 |
template<class DataType>
classLinkList
{
public:
LinkList( );
LinkList(DataType a[ ], int n);
~LinkList( );
int Length( );
DataType Get(inti);
int Locate(DataType x);
void Insert(inti, DataType x);
DataType Delete(inti);
void PrintList( );
private:
Node<DataType>*first;
};
2.4 顺序表和链表的比较
主要内容
2.41 时间性能比较 |
2.42 空间性能的比较 |
2.5 线性表的其它存储方法
主要内容
2.51 静态链表 |
2.52 间接寻址 |
本章总结
构造函数的作用是初始化一个对象的成员变量。
构造函数的特点:
1. 构造函数必须与类名相同;
2. 必须声明为类的公有成员函数;
3. 不可以有返回值也不得指明返回类型;
4. 构造函数可以重载。
析构函数
析构函数用于在一个对象被撤消时删除其成员变量,其标志是在类的名字前面加 上“~”。
析构函数特点:
1.析构函数没有参数和返回值;
2.一个类只能有一个析构函数;
3. 析构函数不允许重载。