非你莫属张翔是哪一期:看看我C++程序错那了

来源:百度文库 编辑:中科新闻网 时间:2024/05/08 22:39:40
#include "iostream.h"
const int MaxSize=100;
template<class T>
class SeqList
{
public:
SeqList(){length=0;}

~SeqList(){}
int Length() {return length;}
T Get(int i);
int Locate(T x);
void Insert(int i,T x);
T Delete(int i);
void PrintList();
private:
T data[MaxSize];
int length;
};
//构造
template<class T>
SeqList<T>::SeqList()
{
int i;
int n;
cin>>n;
for(i=0;i<n;i++)
cin>>data[i];
length=n;
}
//插入
template<class T>
void SeqList<T>::Insert(int i,T x)
{
int j;
if(length>=MaxSize) throw "no";
if(i<1||i>length) throw "not";
for(j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}
//删除
template<class T>
SeqList<T>::Delete(int i)
{
int x,j;
if(length>MaxSize) throw "no";
if(i<1||i>length) throw "not";
x=data[i-1];
for(j=i;j<length;j++)
data[j-1]=data[j];
length--;
return x;
}

//遍历
template<class T>
void SeqList<T>::PrintList()
{
int i;
for(i=0;i<length;i++)
cout<<data[i];
cout<<endl;
}
void main()
{
int i,n,x;
SeqList A;
A.SeqList();
n=A.length();
A.PrintList();
cin>>i;
cin>>x;
A.Insert(i,x);
A.PrintList();
n=A.length();
cin>>i;
A.Delete();
n=A.length();
A.PrintList();
}

1. SeqList(){length=0;} 已经定义了构造函数了,建议将其删除

2.Delete定义与实现不同:定义的时候是返回类型为T,参数为整形,而你的实现没有返回类型,就修改为
template<class T>T SeqList<T>::Delete(int i)
{
...
}

3.A的定义错误:
模板类的变量定义除了一般一定义之后还要指定class T的类型,定义就改为SeqList<int> A;

3.不要手动调用构造函数:
在你定义变量的时候,构造函数是自动调用的

4.你的Length调用时名称写错了,注意,C++/C是区分大小写的

5.Delete调用出错了:没有给定参数

给一个修改后可以编译通过的程序:

#include "iostream.h"
const int MaxSize=100;
template<class T>
class SeqList
{
public:
SeqList();

~SeqList(){}
int Length() {return length;}
T Get(int i);
int Locate(T x);
void Insert(int i,T x);
T Delete(int i);
void PrintList();
private:
T data[MaxSize];
int length;
};
//构造
template<class T>SeqList<T>::SeqList()
{
int i;
int n;
cin>>n;
for(i=0;i<n;i++)
cin>>data[i];
length=n;
}
//插入
template<class T>
void SeqList<T>::Insert(int i,T x)
{
int j;
if(length>=MaxSize) throw "no";
if(i<1||i>length) throw "not";
for(j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}
//删除
template<class T> T
SeqList<T>::Delete(int i)
{
int x,j;
if(length>MaxSize) throw "no";
if(i<1||i>length) throw "not";
x=data[i-1];
for(j=i;j<length;j++)
data[j-1]=data[j];
length--;
return x;
}

//遍历
template<class T>
void SeqList<T>::PrintList()
{
int i;
for(i=0;i<length;i++)
cout<<data[i];
cout<<endl;
}
void main()
{
int i,n,x;
SeqList<int> A;
n=A.Length();
A.PrintList();
cin>>i;
cin>>x;
A.Insert(i,x);
A.PrintList();
n=A.Length();
cin>>i;
A.Delete(1);
n=A.Length();
A.PrintList();
}