顺序列表(栈/队列等)ADT[C++]

#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;
}

 

posted @ 2017-09-22 19:41  千千寰宇  阅读(903)  评论(0编辑  收藏  举报