读书人

线性表的尝试出错了哪位高手帮小弟

发布时间: 2012-09-10 22:20:12 作者: rapoo

线性表的尝试,出错了,谁帮我看下,谢谢
#include<iostream>
using namespace std;
template <class T>
class SeqList{
public:
SeqList (int length=10);
void InitList (){last = -1;};
int InsetList (T x,int i);
int LocateList (T &x);
int Length(){return last+1;};
T Get(int i){return (i<0||i>last?NULL:data[i]);};
int DeleteList (T &x);
private:
int MaxSize;
int last;
T *data;
};

template <class T> int SeqList<T>::InsetList(T x,int i){
if(i<0 || i>last+1 || last = MaxSize-1) return 0;
else{
last++;
for(int j=last;j>i;j--) data[j]=data[i-1];
data[i]=x;
return 0;
}
}
template <class T> int SeqList<T>::LocateList (T &x){
int i=0;
while(i<last && data[i]!=x) i++;
if (i>last) return -1;
else return i;
}
template <class T> int SeqList<T>::DeleteList (T &x){
int i= LocateList (x);
if (i>=0){
last--;
for(int j=i;j<=last;j++) data[j]=data[j+1];
return 1;
}
}
template <typename T> void Union(SeqList<T> &LA,SeqList<T> &LB){
for(int i=0;i<9;i++){
int n=LA.Length();
T x=LB.Get(i);
int k = LA.LocateList (x);
if (k== -1){
LA.InsetList(x,n+1);n++;}
}
}
int main(){
SeqList<int> LA,LB;
int a=0;
int b=0;
cout<<"输入LA的数及其位置"<<endl;
cin>>a>>b;
while(b!=-1){
LA.InsetList(a,b);
};
cout<<"输入LB的数及其位置"<<endl;
cin>>a>>b;
while(b!=-1){
LB.InsetList(a,b);
};
Union(LA,LB);
system("pause");
return 0;
}


错误提示: E:\CPP\线性表.cpp In member function `int SeqList<T>::InsetList(T, int) [with T = int]':
60 E:\CPP\线性表.cpp instantiated from here
21 E:\CPP\线性表.cpp non-lvalue in assignment

[解决办法]

C/C++ code
#include<iostream>using namespace std;template <class T>class SeqList{public:    SeqList(int length=10); //构造函数写法错误!    ~SeqList();    //以下几个函数不需要末尾的分号错啦!    void InitList (){ last = -1; }     int InsetList ( T x,int i);    int LocateList (T &x);    int Length(){ return last+1; }    T Get(int i){ return ( i<0 || i>last ? NULL:data[i] ); }    int DeleteList (T &x);        void printList();  //new addprivate:    int MaxSize;    int last;    T *data;};template <class T> SeqList<T>::SeqList(int length){    MaxSize = length;     last = -1;     data = (T*)malloc(MaxSize);} template <class T> SeqList<T>::~SeqList(){    if(data != NULL)    {        free(data);    }    data = NULL;} template <class T> int SeqList<T>::InsetList(T x,int i){    if(i<0 || i>MaxSize+1 || last == MaxSize-1)  //此处是判断,不是赋值!注意两者的区别!        return 0;    else    {        last++;        cout << "last =" << last << endl;        for(int j=last;j>i;j--)         {            data[j]=data[j-1];        }        data[i]=x;        return 0;    }}template <class T> int SeqList<T>::LocateList (T &x){    int i=0;    while(i<last && data[i]!=x)     {        i++;    }    if (i>last)     {        return -1;    }    else     {        return i;    }}template <class T> int SeqList<T>::DeleteList (T &x){    int i= LocateList (x);    if (i>=0)    {        last--;        for(int j=i;j<=last;j++)        {            data[j]=data[j+1];        }        return 1;    }}template <typename T> void SeqList<T>::printList(){}template <typename T> void Union(SeqList<T> &LA,SeqList<T> &LB) {    for(int i=0;i<9;i++)    {        int n=LA.Length();        T x=LB.Get(i);        int k = LA.LocateList (x);        if (k== -1)        {            LA.InsetList(x,n+1);            n++;        }    }}int main(){    SeqList<int> LA,LB;    int a=0;    int b=0;    while(b!=-1)    {              cout<<"输入LA的数及其位置"<<endl; // b=-1代表结束.        cin>>a>>b;          LA.InsetList(a,b);    };    LA.printList();//     cout<<"输入LB的数及其位置"<<endl;//     cin>>a>>b;  //     while(b!=-1)//     {  //         cout<<"输入LB的数及其位置"<<endl; //b=-1代表结束//         cin>>a>>b;  //         LB.InsetList(a,b);//     };// //     Union(LA,LB);//     system("pause");    return 0;} 

读书人网 >软件架构设计

热点推荐