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();
唯崇一技之长,不为学历凭!