#include<iostream> using namespace std; //ADT template<class T> class SeqList{ public: //构造函数 SeqList() { this->length = 0; this->data = NULL; } SeqList(int length); SeqList(int length,T array[]); //增 int push(T data);//入(栈/队),并返回新数组的长度 int unshift(T data);//类似于队列,从队头入,并返回新数组的长度 //删除 T pop();//出栈,并返回元素值 T shift();//出队,并返回该处元素值 //查 int Length(); //返回数组长度 bool includes(T data); //查询数组中是否存在该元素 int indexOf(T data);//返回该值的下标 T valueOf(int index);//返回下标对应的值 //(修)改 T replaceValueOf(int index);//按照下标替换值,并返回该处原来的值 int replaceIndexOf(T data);//按照 //排序 void sort();//默认升序排列 void sort(int TYPE);//0:升序,1逆序 //逆序 void reverse(); ~SeqList(); private: T *data; int length; }; template<class T> SeqList<T>::SeqList(int length){ if(length>-1){ this->length = length; this->data = new T[length]; }else{ throw "WARNING:Argument 'length' is invalid!"; } } template<class T> SeqList<T>::SeqList(int length,T array[]){ if(length>-1){ this->length = length; this->data = new T[length]; }else{ throw "WARNING:Argument 'length' is invalid!"; } for(int i=0;i<this->length;i++){ this->data[i] = array[i]; } printf("constructor has completed!"); } //入(栈/队),并返回新数组的长度 template<class T> int SeqList<T>::push(T data){ return 0; } //类似于队列,从队头入,并返回新数组的长度 template<class T> int SeqList<T>::unshift(T data){ return 0; } //出栈,并返回元素值 template<class T> T SeqList<T>::pop(){ } //出队,并返回该处元素值 template<class T> T SeqList<T>::shift(){ } template<class T> int SeqList<T>::Length(){ //返回数组长度 return this->length; } template<class T> bool SeqList<T>::includes(T data){ //查询数组中是否存在该元素 return true; } template<class T> int SeqList<T>::indexOf(T data){//返回该值的下标 return 0; } template<class T> T SeqList<T>::valueOf(int index){//返回下标对应的值 return NULL; } //(修)改 template<class T> T SeqList<T>::replaceValueOf(int index){//按照下标替换值,并返回该处原来的值 return NULL; } template<class T> int SeqList<T>::replaceIndexOf(T data){//按照 return 0; } //排序 template<class T> void SeqList<T>::sort(){//默认升序排列 ; } template<class T> void SeqList<T>::sort(int TYPE){//0:升序,1逆序 ; } //逆序 template<class T> void SeqList<T>::reverse(){ ; } template<class T> SeqList<T>::~SeqList(){ delete [] this->data; } int main(){ SeqList<int>demo(2); cout<<demo.Length(); return 0; }