代码还没有调通,分析一下,关键是那个模板的使用不是太熟练的,明天看看,把这个调通。
// 顺序表的c++实现;
#include "StdAfx.h"
#include <iostream>
#include <string>
using namespace std;
const int MaxSize = 100;
template<typename T>
class SeqList
{
public:
SeqList() // 无参构造函数;
{
length = 0;
}
SeqList(T a[],int n); // 有参构造函数;
~SeqList(){} // 析构函数;
int Length() // 求线性表的长度;
{
return length;
}
T Get(int i); // 按位查找,取线性表的第i个元素
int Locate(T x); // 按值查找,求线性表中值为x的元素序号
void Insert(int i,T x); // 在线性表的第i个位置插入值为x的元素;
T Delete(int i); // 删除线性表中的第i个元素
void PrintList(); // 遍历线性表,按序号依次输出各个元素的值。
private:
T data[MaxSize]; // 存放数据元素的数组;
int length; // 线性表的长度
};
// 有参构造函数的实现;
template<typename T>
SeqList::SeqList(T a[],int n)
{
if (n > MaxSize)
{
throw"参数非法";
}
for (int i = 0;i < n;++ i)
{
data[i] = a[i];
}
length = n;
}
// 顺序表插入算法Insert
template<typename T>
void SeqList::Insert(int i,T x)
{
if (length >= MaxSize)
{
throw"上溢";
}
if (i < 1 || i > length + 1)
{
throw"位置异常";
}
for (int j = length;j >= i;j --)
{
data[j] = data[j - 1]; // 注意数组中的位置与下标之间的关系;
}
data[i - 1] = x;
length ++;
}
int main(int argc,char* argv[])
{
return 0;
}