zoukankan      html  css  js  c++  java
  • 顺序列表(栈/队列等)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;
    }
  • 相关阅读:
    phpcms V9 联动菜单的调用
    【转】雷军:扁平化管理 不打卡不设KPI
    【转】 Json转换利器Gson之实例五-注册TypeAdapter及处理Enum类型
    【转】Json转换利器Gson之实例四-实际开发中的特殊需求处理
    【转】 Json转换利器Gson之实例三-Map处理
    【转】 Json转换利器Gson之实例二-Gson注解和GsonBuilder
    【转】Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
    【转】工作分解结构在软件开发中的应用
    【转】 IT项目管理的三个条件、五个步骤
    【转】 项目组内个角色的职责说明
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/7576786.html
Copyright © 2011-2022 走看看