• 队列循环实现(C++)


    C++队列的循环实现:

    View Code
    const int MAXQUEUE = 10;
    
    template<class T>
    class ZtkQueue {
    public:
        ZtkQueue();
        bool empty() const;
        ErrorCode append(const T &x);
        ErrorCode serve();
        ErrorCode retrieve (T &x)const;
        bool full() const;
        int size() const;
        void clear();
        ErrorCode serve_and_retrieve(T &x);
    private:
        int count;
        int rear;
        int front;
        T entry[MAXQUEUE];
    };
    
    template<class T>
    ZtkQueue<T>::ZtkQueue():count(0),front(0),rear(MAXQUEUE-1)
    {
    }
    
    template<class T>
    ErrorCode ZtkQueue<T>::serve_and_retrieve(T &x)
    {
        ErrorCode outcome = success;
        if(count > 0)
        {
            count--;
            x=entry[front];
            front = ((front+1)==MAXQUEUE)?0:front+1;
        }
        else
            outcome = underflow;
        return outcome;
    }
    
    template<class T>
    void ZtkQueue<T>::clear()
    {
        count=0;
        rear=MAXQUEUE - 1;
        front=0;
    }
    
    template<class T>
    int ZtkQueue<T>::size() const
    {
        return count;
    }
    
    template<class T>
    bool ZtkQueue<T>::full() const
    {
        if(count == MAXQUEUE)
            return true;
        else
            return false;
    }
    
    template<class T>
    ErrorCode ZtkQueue<T>::retrieve(T &x) const
    {
        ErrorCode outcome = success;
        if(!empty())
            x = entry[front];
        else
            outcome = underflow;
        return outcome;
    }
    
    template<class T>
    ErrorCode ZtkQueue<T>::serve()
    {
        ErrorCode outcome = success;
        if(count>0)
        {
            count--;
            front = ((front+1)==MAXQUEUE)?0:front+1;
        }
        else
            outcome = underflow;
        return outcome;
    }
    
    template<class T>
    bool ZtkQueue<T>::empty()const
    {
        if(count>0)
            return false;
        else
            return true;
    }
    
    template<class T>
    ErrorCode ZtkQueue<T>::append(const T &x)
    {
        ErrorCode outcome = success;
        if(count < MAXQUEUE)
        {
            count++;
            rear = ((rear+1)==MAXQUEUE)?0:rear+1;
            entry[rear]=x;
        }
        else
            outcome = overflow;
        return outcome;
    }
  • 相关阅读:
    Centos设置阿里云yum源
    十大排序算法之Java实现
    什么是DFS和BFS?
    计算机专业技能-Java专项练习
    Lamda 表达式
    JavaWeb实现分页的四种方法
    Linux 常用关机命令及其比较
    Chocolatey常用命令
    JAVA++:JAVA中try、catch、finally带return的执行顺序
    MySQL++:MySQL 多行数据合并 GROUP_CONCAT
  • 原文地址:https://www.cnblogs.com/zhoutk/p/2736447.html
Copyright © 2020-2023  润新知