#include <iostream>
using namespace std;
template<typename T>
class myQueue
{
public:
myQueue() : head(0), tail(0), length(0)
{
//memset(a, 0, sizeof(a)); //没有string数组
a = new T[maxn];
}
~myQueue();
void push(const T&);
void pop();
T& front();
int size() const
{
return length;
}
bool empty() const;
bool full() const
{
return (tail + 1) % maxn == head;
}
void destory();
private:
static const int maxn = 255;
int head, tail, length;
T *a;
};
template<typename T>
myQueue<T>::~myQueue()
{
delete[] a;
}
template<typename T>
bool myQueue<T>::empty() const{
return size() == 0;
}
template<typename T>
void myQueue<T>::push(const T& val)
{
a[tail] = val;
tail = (tail + 1) % maxn;
length++;
}
template<typename T>
T& myQueue<T>::front()
{
return a[head];
}
template<typename T>
void myQueue<T>::pop()
{
head = (head + 1) % maxn;
length--;
}
template<typename T>
void myQueue<T>::destory()
{
while(!empty())
pop();
}
int main(void)
{
// myQueue<int> q;
//
// for(int i = 0; i < 257; i++)
// {
// if(!q.full())
// q.push(i);
// }
//
// while(!q.empty())
// {
// cout << q.front() << endl;
// q.pop();
// }
// myQueue<double> q;
// q.push(1.1);
// q.push(0.22);
//
// cout << q.size() << endl;
// cout << q.front() << endl;
myQueue<string> q;
q.push("lalala");
cout << q.front() << endl;
return 0;
}
C++实现队列(数组版)
最新推荐文章于 2024-04-28 18:45:35 发布