程序运行时出现debug error,求高手帮忙看一下代码,谢谢~~

Minirose 2010-10-16 04:37:44
#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;
}
...全文
198 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheng_fengming 2010-10-16
  • 打赏
  • 举报
回复
lz用的是什么编译器?我看了下也是出现了两个警告而已
你把那个debug文件夹里面的东西删掉 然后重新编译一下看看有什么错误么,或者重新建个工程,把C源文件加进去看看可以不?
另外有的时候你需要出现这种错误的时候rebuild一下就可以了
在Rebuild选项下面有一个Rebuild all命令,执行以下看看。
Minirose 2010-10-16
  • 打赏
  • 举报
回复
执行函数的时候出现debug error 。。。。。。
Minirose 2010-10-16
  • 打赏
  • 举报
回复
是不是我的编译器的问题呢
某某9 2010-10-16
  • 打赏
  • 举报
回复
编译器提示 两个i没初始化, 运行时没有出现debug error
template <class T>
void SeqList<T>::Append(T x)
{
int i; //
if(i==length)
{
data[i+1] = x;
}
length ++;
}

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;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧