这个错误1error C1075: 与左侧的 大括号“{”匹配之前遇到文件结束

原问题:这个错误1error C1075: 与左侧的 大括号“{”匹配之前遇到文件结束
分类:编程开发 > 最后更新时间:【2017-07-29 18:38:10】
问题补充:

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++高级编程 ,没有基础是掌握不了的

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
20

分享到:

其他回答

暂无其它回答!

    推荐