在线等大叔大婶回答
//LinearList.h///////////////////////////////////////////////////////////////////////////////////////////////********************************************************************************************ADT2.1:数据: 0个或者多个元素的线性序列(A0,A1,A2 ...An-1),其中最大允许长度为 MAXLISTSIZE方法:Create(); 创建一个线性表 Destory(); 撤销一个线性表IsEmpty(); 若线性表空,则返回ture,否则返回false; Length(); 返回表中元素个数Find(i,x); 在x中返回表中下标为i的元素,若不存在,返回false,否则返回true.Search(x); 若x不在表中,则返回-1,否则返回x在表中的下标。InSert(i,x); 在第i个元素后面插入一个值为x的元素,若 i = -1,则插到最前面。插入成功,则返回ture,否则返回false;Delete(i); 删除第i个元素,删除成功,则返回ture,否则返回false;Update(i,x); 将第i个元素修改值为x,修改成功,则返回ture,否则返回false;OutPut(out); 把表送至输出流********************************************************************************************//////////////////////////////////////////////////////////////////////////////////////////////#include <iostream>using namespace std;template <class T>class LinearList{public: virtual bool IsEmpty() const = 0; virtual bool Length() const = 0; virtual bool Find(int i,T& x) const = 0; virtual int Search(T x) const = 0; virtual Insert(int i,T x) = 0; virtual bool Delete(int i) = 0; virtual bool Update(int i ,T x) = 0; virtual void Output(ostream& out) const = 0;protected: int n; // 线性表的元素个数};////////////////////////////////////////////////////////////////////////////////////////////////////LinearList.CPP///////////////////////////////////////////////////////////////////////////////////////////////********************************************************************************************ADT2.1:数据: 0个或者多个元素的线性序列(A0,A1,A2 ...An-1),其中最大允许长度为 MAXLISTSIZE方法:Create(); 创建一个线性表 Destory(); 撤销一个线性表IsEmpty(); 若线性表空,则返回ture,否则返回false; Length(); 返回表中元素个数Find(i,x); 在x中返回表中下标为i的元素,若不存在,返回false,否则返回true.Search(x); 若x不在表中,则返回-1,否则返回x在表中的下标。InSert(i,x); 在第i个元素后面插入一个值为x的元素,若 i = -1,则插到最前面。插入成功,则返回ture,否则返回false;Delete(i); 删除第i个元素,删除成功,则返回ture,否则返回false;Update(i,x); 将第i个元素修改值为x,修改成功,则返回ture,否则返回false;OutPut(out); 把表送至输出流********************************************************************************************//////////////////////////////////////////////////////////////////////////////////////////////#include "LinearList.h"#define MAXSIZE 5template <class T>class SeqList:public LinearList<T>{public://////////////////////////////////////////////////////////////////////////SeqList(int mSize);~SeqList(){delete [] elements;}//////////////////////////////////////////////////////////////////////////bool IsEmpty() const;int Length() const;bool Find(int i,T& x) const;int Search(T x) const;bool Insert(int i,T x);bool Delete(int i);bool Update(int i ,T x);void Output(ostream& out) const;//////////////////////////////////////////////////////////////////////////private: int maxLength; T *elements;};//////////////////////////////////////////////////////////////////////////template <class T>SeqList<T>::SeqList(int mSize){ maxLength = mSize; elements = new T[maxLength]; n = 0;}//////////////////////////////////////////////////////////////////////////template <class T>bool SeqList<T>::IsEmpty() const{ return n == 0;}//////////////////////////////////////////////////////////////////////////template <class T>int SeqList<T>::Length() const{ return n;}//////////////////////////////////////////////////////////////////////////template <class T>bool SeqList<T>::Find(int i,T& x) const{ if (i < 0 || i > n-1) { cout << "Out of Bound" << endl; return false; } x = elements[i]; // x 是要传出去值的变量 ::OUT return true;}//////////////////////////////////////////////////////////////////////////template <class T>int SeqList<T>::Search(T x) const{ for(int j=0; j<n; j++) { if (elements[j] = x) { return j; } return -1; }}//////////////////////////////////////////////////////////////////////////template <class T>bool SeqList<T>::Insert(int i,T x){ if (i < -1 || i > n-1) { cout << "Out of Bounds" << endl; return false; } if (n == maxLength) { cout << "OverFlow" << endl; return false; } for (int j = n-1; j > i; j--) { elements[j+1] = elements[j]; } elements[i+1] = x; n++; return true;}//////////////////////////////////////////////////////////////////////////template <class T>bool SeqList<T>::Delete(int i){ if (!n) { cout << "UnderFlowe" << endl; return false; } if (i < -1 || i > n-1) { cout << "Out of Bound" << endl; return false; } for (int j = i+1; j < n; ++j ) { elements[j-1] elements[j]; } n--; return true;}//////////////////////////////////////////////////////////////////////////template <class T>bool SeqList<T>::Update(int i ,T x){ if (i < -1 || i > n-1) { cout << "Out of Bound" << endl; return false; } elements[i] = x; return true;}//////////////////////////////////////////////////////////////////////////template <class T>void SeqList<T>::Output(ostream& out) const{ for (int i = 0; i < n; i++) { out << elements[i] << ' '; } out << endl;}int main(){ SeqList<int> iList(MAXSIZE);// for (int i = 0; i < 9; i++)// {// iList.Insert(i,i+1);// } //iList.Output(cout); return 0;}错误如下:----- Build started: Project: 线性表ADT, Configuration: Debug Win32 ------Compiling...LinearList.cppe:\myfile\线性表\线性表adt\linearlist.cpp(49) : error C2555: 'SeqList<T>::Length': overriding virtual function return type differs and is not covariant from 'LinearList<T>::Length' with [ T=int ] and [ T=int ] e:\myfile\线性表\线性表adt\linearlist.h(33) : see declaration of 'LinearList<T>::Length' with [ T=int ] e:\myfile\线性表\线性表adt\linearlist.cpp(181) : see reference to class template instantiation 'SeqList<T>' being compiled with [ T=int ]e:\myfile\线性表\线性表adt\linearlist.cpp(49) : error C2555: 'SeqList<T>::Insert': overriding virtual function return type differs and is not covariant from 'LinearList<T>::Insert' with [ T=int ] and [ T=int ] e:\myfile\线性表\线性表adt\linearlist.h(36) : see declaration of 'LinearList<T>::Insert' with [ T=int ]Build log was saved at "file://e:\MyFile\线性表\线性表adt\Debug\BuildLog.htm"线性表ADT - 2 error(s), 0 warning(s)