漫画算法笔记
循环队列
#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
;
}
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();
myQueue
.deQueue();
myQueue
.deQueue();
myQueue
.deQueue();
myQueue
.toQueueString();
myQueue
.enQueue(2);
myQueue
.enQueue(4);
myQueue
.enQueue(9);
myQueue
.toQueueString();
system("pause");
return 0;
}
转载请注明原文地址: https://lol.8miu.com/read-25168.html