1 线性表的基本概念
1.1 线性表的表现形式
- 零个或多个数据元素组成的集合
- 数据元素在位置上是有序排列的
- 数据元素的个数是有限的
- 数据元素的类型必须相同
1.2 线性表(List)的抽象定义
线性表是具有相同类型的的n(≥ 0)个数据元素的有限序列。
a0, a1, a2, ... ,an-1 ,ai是表象(数据元素),n是表长度。
1.3 线性表(List的性质)
a0为线性表的第一个元素,只有一个后继an-1为线性表的最后一个元素,只有一个前驱- 除
a0和an-1外的其他元素ai,既有前驱,又有后继 - 直接支持逐项访问和顺序存取
1.4 线性表的一些常用操作
- 将元素插入线性表
- 将元素从线性表删除
- 获取目标位置处元素的值
- 设置目标位置处元素的值
- 获取线性表的长度
- 清空线性表
2 继承关系图和接口实现
线性表在程序中表现为一种特殊的数据类型,在当前库中表现为抽象类。
线性表继承关系图

List接口实现:
template < typename T >
class List : public Object
{
public:
virtual bool insert(int index, const T& e) = 0;
virtual bool insert(const T& e) = 0; // 插入到尾部
virtual bool remove(int index) = 0;
virtual bool set(int index, const T& e) = 0;
virtual bool get(int index, T& e) const = 0;
virtual int length() const = 0;
virtual void clear() = 0;
};
3 代码实现
List.h
#ifndef LIST_H
#define LIST_H
#include "Object.h"
namespace LemonLib {
template < typename T >
class List : public Object
{
protected:
// 对于容器类型的类,可以考虑禁用拷贝构造和赋值操作
List(const List&); // 这里只需要声明即可,无需实现
List& operator= (const List&);
public:
List(){} // 这里不要忘记提供构造函数
virtual bool insert(int index, const T& e) = 0;
virtual bool remove(int index) = 0;
virtual bool set(int index, const T& e) = 0;
virtual bool get(int index, T& e) const = 0;
virtual int find(const T& e) const = 0;
virtual int length() const = 0;
virtual void clear() = 0;
};
}
#endif // LIST_H
参考资料:

2223

被折叠的 条评论
为什么被折叠?



