线性表的顺序存储难点应该在于删除和插入操作。当要进行插入操作时,需要将待插入位置到最后位置的元素依次往后移位,应该从后往前操作。而删除操作需要将待删除的位置的前一位到最后位置的元素依次往前移动移位,将待删除的元素覆盖掉,应该从前往后操作
#include <iostream>
using namespace std;
template<typename T>
class SqList{
private:
T *elem;
int length; //表长
int listsize; //表容量
public:
SqList(int m); //创建容量为m的空表
~SqList();
void CreateList(int n); //创建表长为n的线性表
void Insert(int i, T e); //在i位置插入值e
T Delete(int i); //删除i位置的值并返回它
int Locate(T e); //通过给定值查找线性表中第一个等于此 值的数,返回其序列号
void Clear(); //清空表
T GetElem(int i); //获取i位置的值
int Length() const{ return length; } //返回表长
bool Empty() const{ return length == 0; } //检查表是否为空
bool Full() const{ return length == listsize; } //检查表是否满了
void ListTraverse(); //遍历表中的元素
};
template<typename T>
SqList<T>::SqList(int m){
elem = new T[m]; //申请m大小的连续空间
if (!elem)
throw"内存分配失败 \n";
length = 0;