线性表之顺序表和链表
最后发布时间:2020-12-09 22:10:17
浏览量:
父类的线性表ADT
template <class T>
class List {
void clear(); // 置空线性表
bool isEmpty(); // 线性表为空时,返回True
bool append(T value); // 在表尾添加一个元素value,表的长度增1
bool insert(int p, T value); // 在位置p上插入一个元素value,表的长度增1
bool del(int p); // 删除位置p上的元素,表的长度减 1
T getValue(int p); // 返回位置p的元素值
T setValue(int p, T value); // 用value修改位置p的元素值
};
顺序表的ADT
template <class T> // 假定顺序表的元素类型为T
class arrList : public List<T>
{ // 顺序表,向量
private: // 线性表的取值类型和取值空间
int maxSize; // 私有变量,顺序表实例的最大长度
int curLen; // 私有变量,顺序表实例的当前长度
int position; // 私有变量,当前处理位置
T *aList; // 私有变量,存储顺序表的实例
public: // 顺序表的运算集
arrList(const int size); // 创建一个新的顺序表,参数为表实例的最大长度
~arrList(); // 析构函数,用于消除该表实例
int getPos(const T value); // 在线性表中查找值为value的元素,并返回第1次出现的位置
void print();
void clear(); // 将顺序表存储的内容清除,成为空表
bool isEmpty(); // 线性表为空时,返回True
bool append(T value); // 在表尾添加一个元素value,表的长度增1
bool insert(int p, T value); // 在位置p上插入一个元素value,表的长度增1
bool del(int p); // 删除位置p上的元素,表的长度减 1
int length(); // 返回此顺序表的当前实际长度
T getValue(int p); // 返回位置p的元素值
T setValue(int p, T value); // 用value修改位置p的元素值
// 打印线性表
};
链表的ADT
链表节点ADT
template <class T>
class Link{
public:
T data; // 用于保存节点的元素
Link<T> *next; // 只向后记节点的指针
Link(const T info, const Link<T>* nextValue=NULL);
Link( Link<T>* nextValue=NULL);
};
链表ADT
template <class T>
class lnkList : public List<T>
{
private:
Link<T> *head, *tail; //单链表的指针
public:
lnkList();
lnkList(int s);
~lnkList();
void clear();
bool isEmpty();
bool append(const T value);
bool insert(const int p, const T value);
bool del(const int i);
T getValue(int p); // 返回位置p的元素值
T setValue(int p, T value); // 用value修改位置p的元素值
Link<T> *getPos(const int p); //第p个元素指针
int length();
void print();
};