• C++实现队列


    程序源码:

    //
    // Created by Xiaoyong on 2019/10/12.
    //
    #include <iostream>
    #include <stdio.h>
    #ifndef ORSDS_XQUEUE_H
    #define ORSDS_XQUEUE_H
    using namespace std;
    template <typename T>
    class XQueue {
    private:
        T* factory;
        int size = 0;
    public:
        struct Params{
            int size;
        }params;
        XQueue<T>();
        ~XQueue<T>();
        void init();
        void push(T item);
        int length();
        T pop();
        T getTop();
        bool isFull();
        void print();
    };
    
    template <typename T>
    XQueue<T>::XQueue() {}
    
    template <typename T>
    XQueue<T>::~XQueue() {
        delete(this->factory);
    }
    
    template <typename T>
    void XQueue<T>::init(){
        this->factory = new T[this->params.size];
    }
    
    template <typename T>
    int XQueue<T>::length() { return this->size; }
    
    template <typename T>
    bool XQueue<T>::isFull() { return this->size >= this->params.size; }
    
    template <typename T>
    T XQueue<T>::getTop() { return this->factory[0]; }
    
    template <typename T>
    void XQueue<T>::push(T item) {
        if(!this->isFull()){
            this->factory[this->size] = item;
            this->size++;
        }else{
            for (int i = 1; i < this->params.size; ++i)
                this->factory[i-1] = this->factory[i];
    
            this->factory[this->params.size - 1] = item;
        }
    }
    
    template <typename T>
    T XQueue<T>::pop() {
        //T ele = this->factory
        T element = this->factory[0];
        for (int i = 1; i < this->params.size; ++i)
            this->factory[i-1] = this->factory[i];
        this->size--;
    
        return element;
    }
    
    template <typename T>
    void XQueue<T>::print(){
        for (int i = 0; i < this->size; ++i) {
            cout<<this->factory[i]<<"	";
        }
        cout<<endl;
    }
    #endif //ORSDS_XQUEUE_H
    

    调用方法:

    XQueue<int> queue;
        queue.params.size = 5;
        queue.init();
        for (int i = 0; i < 10; ++i) {
            queue.push(i);
            cout << queue.getTop()<< "	" << i << endl;
        }
        queue.print();
    
  • 相关阅读:
    SQL基础 union的用法
    VSCore的使用方法
    k8s——了解kubernetes机理
    电子科大啦
    19款程序员最爱的开发框架
    Exp1 PC平台逆向破解(5)M
    电子阅读
    Python学习记录:基础知识1
    WCF使用小结:(1)WCF接收HTTP POST数据的处理方法
    Linux配置经验总结:(3)禁用笔记本触摸屏
  • 原文地址:https://www.cnblogs.com/muxuan/p/11891600.html
Copyright © 2020-2023  润新知