#include <iostream>
#include <cstdio>
#include <stdlib.h>
using namespace std;
namespace Queue{
template<typename Q>
class queue{
typedef Q * ptr;
public:
ptr que;
int len;
int size;
int head;
int tail;
queue(){
this->len = 0;
this->head = 0;
this->tail = 0;
this->size = 0;
que = new Q[1000];
}
queue(int len):len(len + 1)
{
this->head = 0;
this->tail = 0;
this->size = 0;
que = new Q[len];
}
bool empty()
{
return !size;
}
int length()
{
return size;
}
Q front()
{
return que[head];
}
void insert(Q e)
{
if ( size >= len ){
cout << "full queue !!!" <<endl;
exit(-1);
}
else{
que[tail] = e;tail = (tail + 1) % len;
size++;
}
}
Q pop()
{
if (!size) {
cout << "empty queue !!!" <<endl;
exit(-1);
}
else{
ptr tmp = &que[head];
head = (head + 1) % len;
size--;
return *tmp;
}
}
void iterator(void(*visit)(Q e))
{
for (int i = head;i!=tail;i = (i + 1)%len)
{
visit(que[i]);
}
cout << "-----------------" << endl;
}
};
}
void visit(int d)
{
cout << d << endl;
}
int main()
{
Queue::queue<int> q(5);
q.insert(9);
q.insert(10);
q.insert(11);
q.insert(8);
q.insert(1);
q.iterator(visit);
while(!q.empty())
{
cout <<q.pop() <<endl;
}
cout << q.size <<endl;
return 0;
}
数据结构之队列
最新推荐文章于 2020-09-09 20:59:27 发布