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;
    }
  • 相关阅读:
    mysql字段使用timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,类似mssql的getdate()功能;字段自增
    xmlInitParser 和 xmlCleanupParser 使用详解
    修改虚拟机硬盘的大小
    linux 查看系统进程命令
    linux查看系统信息的命令
    Eclipse快捷键大全(转载)
    获取可执行文件的全路径和所属目录
    dlopen加载c++ 函数及类
    使用LVM在vmware中增大linux的根分区
    查看linux的文件系统是什么格式的(如ext2,ext3,xfs等)?
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/7576786.html
Copyright © 2011-2022 走看看