#include<iostream> #include <string> /* 功能:數組實現的循環隊列,C++實現,學習參考 */ using namespace std; template <typename T> class Myloopqueue{ private: T *queue;//存儲用的數組 int capacity;//存放個數 int head;//指向隊首 int tail;//指向隊尾 public: Myloopqueue(int a);//無參構造 Myloopqueue();//有參構造 ~Myloopqueue();//析構 bool isEmpty();//判斷空 int getSize();//返回個數 bool push(T a);//入隊 bool pop();//出隊 T top();//顯示隊首 }; template<typename T> Myloopqueue<T>::Myloopqueue(int a) :head(0), tail(0), capacity(a), queue(nullptr){ queue = new T[capacity]; } template<typename T> Myloopqueue<T>::Myloopqueue() : Myloopqueue(10){}; template<typename T> Myloopqueue<T>::~Myloopqueue(){ delete[] queue; } template<typename T> bool Myloopqueue<T>::isEmpty(){ if (head == tail) return true; else return false; } template<typename T> int Myloopqueue<T>::getSize(){ return (tail - head + capacity) % capacity; } template<typename T> bool Myloopqueue<T>::push(T a){ if ((tail - head + capacity) % capacity == capacity) return false; queue[tail] = a; tail = (tail + 1) % capacity; return true; } template<typename T> bool Myloopqueue<T>::pop(){ if ((tail - head + capacity) % capacity == 0) return false; head = (head + 1) % capacity; return true; } template<typename T> T Myloopqueue<T>::top(){ return queue[head%capacity]; } int main() { Myloopqueue<string> queue(6); queue.push("one"); queue.push("two"); queue.push("three"); queue.push("four"); queue.push("five"); cout << "隊列長度" << queue.getSize() << endl; while (!queue.isEmpty()) { cout << queue.top() << endl; queue.pop(); } getchar(); return 0; }