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]<<"\t";
    }
    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()<< "\t" << i << endl;
    }
    queue.print();
posted @ 2019-11-19 19:02  牧轩居士  阅读(394)  评论(0编辑  收藏  举报