- 目标:用数组实现线性表的操作
- 开发环境:win10、vs2013
实现的功能:
- 为了实现以上8个功能,一共写了12个函数:
template <class T>class SqListClass
{
private:
T *data;
int length;
public:
SqListClass();
~SqListClass();
void CreateList(vector<T> a, int n);//创建线性表
void ListTraverse();//显示线性表元素
int ListLength();//线性表长度
bool GetElem(int i, T &e);//找到第i个元素的值
void LocateElem(T e, int i);//通过数值定位元素
bool ListInsert(int i, T e);//线性表的插入
bool ListDelete(int i);//线性表的删除
void ReverseList(SqListClass<T> &L);//线性表的转置
void SetNull(vector<T> a);//置空表
bool FindPrior(int i, T &e);//找到第i个元素前驱的值
bool FindNext(int i, T &e);//找到第i个元素后继的值
};
- 插入:
ListInsert(int i, T e)
{
if (i<1 || i>length)
{
cout << "输入错误!!插入失败!!" << endl;
return false;
}
for (int j = length; j > i-1; j--)
{
data[j] = data[j - 1];
}
data[i-1] = e;
length++;
cout << "插入成功!!" << endl;
return true;
}
- 转置
ReverseList(SqListClass<T> &L)
{
T temp = 0;
for (int i = 0; i < L.length / 2; i++)
{
temp = data[i];
data[i] = data[length - 1 - i];
data[length - i - 1] = temp;
}
}
- 找前驱:
FindPrior(int i, T &e)
{
if (i - 2 < 0 || i > length - 1)
{
cout << "前驱不存在!!" << endl;
return false;
}
else
{
e = data[i - 2];
cout << e << endl;
return true;
}
}
基本上只是用for循环实现的简单的线性表的功能,下一篇博客用指针的形式表示出来
剩下的代码上传到GitHub上了:https://github.com/shuailishasls