文章标题 原创 翻译 转载 文章内容 ``` // Queue.h #ifndef _QUEUE_H_ #define _QUEUE_H_ template<class T> class Queue { public: Queue(int size = 10); ~Queue(); bool IsEmpty() const; bool IsFull() const; T First() const; T Last() const; Queue<T>& Add(const T &x); Queue<T>& Delete(T &x); private: int front; int rear; int MaxSize; T *queue; }; #endif // _QUEUE_H_ // Queue.cpp #include "Queue.h" #include <iostream> using namespace std; template<class T> Queue<T>::Queue(int size = 10) { MaxSize = size + 1; queue = new T[MaxSize]; front = rear = 0; } template<class T> Queue<T>::~Queue() { delete [] queue; } template<class T> bool Queue<T>::IsEmpty() const { return (front == rear); } template<class T> bool Queue<T>::IsFull() const { return ( ((rear+1) % MaxSize == front) ? 1 : 0 ); } template<class T> T Queue<T>::First() const { if (IsEmpty()) { cout << "Queue is empty!" << endl; } return queue[(front+1) % MaxSize]; } template<class T> T Queue<T>::Last() const { if (IsEmpty()) { cout << "Queue is empty!" << endl; } return queue[rear]; } template<class T> Queue<T>& Queue<T>::Add(const T &x) { if (IsFull()) { cout << "Queue is full!" << endl; reutrn *this; } rear = (rear+1) % MaxSize; queue[rear] = x; return *this; } template<class T> Queue<T>& Queue<T>::Delete(T &x) { if (IsEmpty()) { cout << "Queue is empty!" << endl; return *this; } front = (front+1) % MaxSize; x = queue[front]; return *this; } // Queue.cpp #include "Queue.h" #include <iostream> using namespace std; template<class T> Queue<T>::Queue(int size = 10) { MaxSize = size + 1; queue = new T[MaxSize]; front = rear = 0; } template<class T> Queue<T>::~Queue() { delete [] queue; } template<class T> bool Queue<T>::IsEmpty() const { return (front == rear); } template<class T> bool Queue<T>::IsFull() const { return ( ((rear+1) % MaxSize == front) ? 1 : 0 ); } template<class T> T Queue<T>::First() const { if (IsEmpty()) { cout << "Queue is empty!" << endl; } return queue[(front+1) % MaxSize]; } template<class T> T Queue<T>::Last() const { if (IsEmpty()) { cout << "Queue is empty!" << endl; } return queue[rear]; } template<class T> Queue<T>& Queue<T>::Add(const T &x) { if (IsFull()) { cout << "Queue is full!" << endl; reutrn *this; } rear = (rear+1) % MaxSize; queue[rear] = x; return *this; } template<class T> Queue<T>& Queue<T>::Delete(T &x) { if (IsEmpty()) { cout << "Queue is empty!" << endl; return *this; } front = (front+1) % MaxSize; x = queue[front]; return *this; } // main.cpp #include "Queue.h" #include "Queue.cpp" #include <iostream> using namespace std; int main(void) { Queue<int> queue(10); for (int i = 1; i <= 10; i++) { queue.Add(i); } cout << "first = " << queue.First() << endl; cout << "last = " << queue.Last() << endl; cin.get(); return 0; } ``` > 2011-08-15 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交