这个错误1error C1075: 与左侧的 大括号“{”匹配之前遇到文件结束
typedef int T;
typedef struct
{
T*data;
int maxSize,n;
}SeqList;
#include<iostream>
#include<stdlib.h>
#include<string>
const int defaultSize=100;
template<class T>
class SeqList
{
protected:
T*data;
int maxSize;
int last;
void reSize(int newSize);
public:
SeqList(int sz=defaultSize);
SeqList(SeqList<T>&L);
~SeqList(){delete[]data;}
int Size()const{return maxSize;}
int Length()const{return last+1;}
int Search(T&x)const;
int Locate(int i)const;
bool getData(int i,T&x)const
{if(i<=last+1&&i>0)
{x=data[i-1];return true;}
else
return false;}
void setData(int i,T&x)
{if(i>0&&i<=last+1)data[i-1]=x;}
bool Insert(int i,T&x);
bool Remove(int i,T&x);
bool IsEmpty(){return (last==-1)?true:false;}
bool IsFull(){return (last==maxSize-1)?true:false;}
void input();
void output();
SeqList<T>operator=(SeqList<T>&L);
};
template<class T>
SeqList<T>::SeqList(int sz)
{
if(sz>0)
{
maxSize=sz;
last=-1;
data=new T[maxSize];
if(data==NULL)
{
cerr<<"存储分配错误!"<<endl;
exit(1);
}
}
}
template<class T>
SeqList<T>::SeqList(SeqList<T>&L)
{
maxSize=L.Size();
last=L.Length()-1;
T value;
data=new T[maxSize];
if(data==NULL)
{
cerr<<"存储分配错误!"<<endl;
exit(1);
}
for(int i=1;i<=last+1;i++)
{
L.getData(i, value);
data[i-1]=value;
}
}
template<class T>
void SeqList<T>::reSize (int newSize)
{
if(newSize<=0)
{
cerr<<"无效的数组大小!"<<endl;
return;
}
if(newSize!=maxSize)
{
T*newarray=new T[newSize];
if(newarray==NULL)
{
cerr<<"存储分配错误!"<<endl;
exit(1);
}
int n=last+1;
T*srcptr=data;
T*destptr=newarray;
while(n--)*destptr++=*srcptr++;
delete[]data;
data=newarray;
maxSize=newSize;
}
}
template<class T>
int SeqList<T>::Search(T&x)const
{
for(int i=0;i<=last;i++)
if(data[i]==x)
return i+1;
return 0;
}
template<class T>
int SeqList<T>::Locate(int i)const
{
if(i>=1&&i<=last+1)
return i;
else
return 0;
}
template<class T>
bool SeqList<T>::Insert(int i,T&x)
{
if(last==maxSize-1)
return false;
if(i<0||i>last+1)
return false;
for(int j=last;i>=i;j--)
data[j+1]=data[j];
data[i]=x;
last++;
return true;
}
template<class T>
bool SeqList<T>::Remove(int i,T&x)
{
if(last==-1)
return false;i
x=data[i-1];
for(int j=i;j<=last;j++)
data[j-1]=data[j];
last--;
return true;
}
template<class T>
void SeqList<T>::input()
{
cout<<"开始建立顺序表,请输入表中元素个数:";
while(1)
{
cin>>last;
if(last<=maxSize-1)
break;
cout<<"表中元素个数输入有误,范围不能超过"<<maxSize-1<<":";
}
for(int i=1;i<=last;i++)
{
cin>>data[i];
cout<<i+1<<endl;
}
}
template<class T>
void SeqList<T>::output()
{
cout<<"顺序表当前元素最后位置为:"<<last<<endl;
for(int i=0;i<=last;i++)
cout<<"#"<<i+1<<":"<<data[i]<<endl;
};
template<class T>
SeqList<T>SeqList<T>::operator=(SeqList<T>&L){
void main()
{
SeqList<T> student;
student.input ();
}
补充:这个错误怎么解决啊最佳答案
你的参考了别人的程序修改的?
你完全没有C++基础啊
你头上定义
typedef int T;
typedef struct
{
T*data;
int maxSize,n;
}SeqList;
是什么?程序下面已有
template<class T>
class SeqList
这个类了
另外,程序中用了cin/cout/cerr,却少了
using namespace std;
还有在bool SeqList<T>::Remove(int i,T&x)中
if(last==-1)
return false;i //这个i是什么意思?
最不靠谱的是
你的main函数居然写在了模板中,也不知你从哪本教材上看到有这样的写法的
建议,若做链表的话,先学会用结构(最多用类)
模板属于C++高级编程 ,没有基础是掌握不了的
其他回答
暂无其它回答!