线性表是个元素的线性序列,记为。线性表是一种动态数据结构,其表长可以变换。线性表上可以执行检索、修改操作,也可以在表中任何位置上执行插入和删除元素的操作。
线性表ADT
ADT LinearList
{
数据:
0或多个元素的线性序列,最大允许的长度为MaxListSize
运算:
Create(): 创建一个空线性表
Destroy(): 撤销一个线性表
IsEmpty(): 若线性表空,则返回true;否则返回false
Length(): 返回表中元素的个数
Find(i, x): 返回表中下标为i的的元素值并赋值给x。若存在,则返回true;否则,返回false
Search(x): 在表中查找x。若不存在返回-1;存在,返回x在表中的下标
Insert(i, x):在下标为i(第i+1个)的元素之后插入x。若i=-1,则x插入到下标为0(第1个)的元素之前。
插入成功,返回true;否则,返回false
Delete(i): 删除下标为i的元素。删除成功,返回true;否则,返回false
Update(i, x):更新下标为i的元素的值,改为x。修改成功,返回true;否则,返回false
Output(): 输出
}
线性表类:LinearList.h
#include <iostream>
using namespace std;
template <class T>
class LinearList
{
public:
virtual bool IsEmpty() const = 0;
virtual int Length() const = 0;
virtual bool Find(int i, T &x) const = 0;
virtual int Search(T x) const = 0;
virtual bool Insert(int i, T x) = 0;
virtual bool Delete(T x) = 0;
virtual bool Update(int i, T x) = 0;
virtual void Output(ostream &out) const = 0;
protected:
int n;
};
未完待续。。。
----------------------------------------------------------------------------------------------------------------------------------------
不是每一次努力都会有收获,但是,每一次收获都必须努力,这是一个不公平的不可逆转的命题 。