漫画算法笔记循环队列

it2025-04-24  16

漫画算法笔记

循环队列

#include <iostream> #include <stdlib.h> #include <algorithm> #include <vector> #include <iterator> using namespace std; //基于数组实现的循环队列 template<typename T> class RoundQueue { public: RoundQueue(int capacity) { _data.resize(capacity); } void toString() { std::copy(_data.begin(), _data.end(), std::ostream_iterator<T>(std::cout, " ") ); cout << endl; } void toQueueString() { for ( int index = _front; index != _rear; ) { cout << _data[index] << " "; index = (index + 1) % _data.size(); } cout << endl; } /* 入队 @param element 入队的元素 */ void enQueue(const T& element) { if ((_rear + 1) % _data.size() == _front) { throw exception("队列已满!"); } _data[_rear] = element; _rear = (_rear + 1) % _data.size(); } /* 出队 */ T deQueue() { if (_rear == _front) { throw exception("队列已满!"); } int deQueueElement = _data[_front]; _data[_front] = 0; _front = (_front + 1) % _data.size(); return deQueueElement; } private: vector<T> _data; int _front = 0; int _rear = 0; }; int main(int argc, char** argv) { RoundQueue<int> myQueue(6); myQueue.enQueue(3); myQueue.enQueue(5); myQueue.enQueue(6); myQueue.enQueue(8); myQueue.enQueue(1); myQueue.toQueueString(); //3 5 6 8 1 myQueue.deQueue(); myQueue.deQueue(); myQueue.deQueue(); myQueue.toQueueString(); //8 1 myQueue.enQueue(2); myQueue.enQueue(4); myQueue.enQueue(9); myQueue.toQueueString(); //2 4 9 system("pause"); return 0; }
最新回复(0)