程序运行时出现debug error,求高手帮忙看一下代码,谢谢~~
#include <iostream>
using namespace std;
const int MaxSize = 20;
template <class T> //定义模板类SeqList
class SeqList
{
public:
SeqList(); //无参构造函数
SeqList(T a[], int n); //有参构造函数
//~SeqList(); // 析构函数
T Get(int i); //按位查找
int Locate(T x); //按值查找
void Insert(int i, T x); // 在某元素之前插入一些元素
T Delete(int i); // 删除某个位置的元素
void Append(T x); // 在表尾插入元素
void Empty(); // 判断表是否为空
void PrintList(); // 遍历输出
private:
T data[MaxSize];
int length;
};
template <class T>
SeqList<T>::SeqList()
{
length = 0;
}
template <class T>
SeqList<T>::SeqList(T a[], int n) //根据数据a,构造一个线性表
{
int i;
if (n > MaxSize)
{
throw "参数非法!";
}
for (i=0; i<n; i++)
{
data[i] = a[i];
length = n;
}
}
template <class T>
void SeqList<T>::Insert(int i, T x)
{
int j;
if (length >= MaxSize)
{
throw "上溢";
}
if (i<1 || i>=length+1)
{
throw "位置不正确";
}
for (j=length; j>=i; j--)
{
data[j] = data[j-1]; //注意第j个元素存在数组下标为j-1处
}
data[i-1] = x;
length ++;
}
template <class T>
T SeqList<T>::Delete(int i)
{
int m;
int x;
if (i<1 || i>length)
{
throw "位置不正确";
}
x = data[i-1];
for (m=i; m<length; m++)
{
data[i-1] = data[i];
}
length --;
return x;
}
template <class T>
T SeqList<T>::Get(int i)
{
if (i>=1 && i<=length)
{
cout << data[i-1] << endl;
}
return 0;
}
template <class T>
int SeqList<T>::Locate(T x)
{
int b;
int i;
for(b=0; b<length; b++)
{
if (data[i] == x)
{
cout << i+1 << endl;
}
}
return 0;
}
template <class T>
void SeqList<T>::Append(T x)
{
int i;
if(i==length)
{
data[i+1] = x;
}
length ++;
}
template <class T>
void SeqList<T>::Empty()
{
if (length == 0)
{
cout << "Yes!" << endl;
}
else
{
cout << "No!" << endl;
}
}
template <class T>
void SeqList<T>::PrintList()
{
int i;
for (i=0; i<length; i++)
{
cout << data[i];
}
}
int main()
{
SeqList <int> s; //创建一个空的顺序表
char Select;
int n=0;
int i;
int x;
int j;
while (cin>>Select && Select!='Q')
{
switch (Select)
{
case 'I':
cin >> n;
for (j=0; j<n; j++)
{
cin >> i >> x;
s.Insert(i,x);
}
break;
case 'S':
cin >> x;
s.Locate(x);
break;
case 'G':
cin >> i;
s.Get(i);
break;
case 'D':
cin >> i;
s.Delete(i);
break;
case 'V':
s.PrintList();
break;
case 'A':
cin >> x;
s.Append(x);
break;
case 'E':
s.Empty();
break;
default :
break;
}
}
return 0;
}