/*用数组构造队列,实现队列的插入/删除/查看等功能
* 队列为先进先出(FIFO)
* */
#include <iostream>
using namespace std;
template <typename T>
class Queue {
public:
//构造函数,申请内存
Queue(int s=5) : len(s), bi(-1), fi(0), count(0)
{
ptr = new T[s];
}
//析构函数,用于销毁数组
~Queue()
{
delete[] ptr;
}
//入队操作,每次入队队列长度加1,新增加的元素为队列的尾部
void push(const T& value)
{
if (full()) {
return ;
}
bi = (bi+1) % len;
ptr[bi] = value;
count++;
}
//删除操作,每次只能删除一个队首元素
void pop()
{
if (empty()) {
return ;
}
fi = (fi+1) % len;
count--;
}
//查看队首元素
T& front()
{
return ptr[fi];
}
//查看队尾元素
T& back()
{
return ptr[bi];
}
//求队列长度
int size()
{
return count;
}
//判断队列是否为满,满返回true(1)
bool full()
{
return count==len;
}
判断队列是否为空,空返回true(1)
bool empty()
{
return count==0;
}
private:
//ptr为数组名,即数组的首地址,fi为第一个元素,bi为最后一个元素,len为数组的空间,count为数组的元素个数
T* ptr;
int bi;
int fi;
int len;
int count;
};
int main()
{
//模板函数,此处取int为例
Queue<int> q;
q.push(5);
q.push(3);
q.push(7);
cout << "front : " << q.front() << endl;
cout << "back : " << q.back() << endl;
cout << "size : " << q.size() << endl;
q.pop();
cout << "----------------" << endl;
cout << "front : " << q.front() << endl;
cout << "back : " << q.back() << endl;
cout << "size : " << q.size() << endl;
cout << "empty : " << q.empty() << endl;
}
* 队列为先进先出(FIFO)
* */
#include <iostream>
using namespace std;
template <typename T>
class Queue {
public:
//构造函数,申请内存
Queue(int s=5) : len(s), bi(-1), fi(0), count(0)
{
ptr = new T[s];
}
//析构函数,用于销毁数组
~Queue()
{
delete[] ptr;
}
//入队操作,每次入队队列长度加1,新增加的元素为队列的尾部
void push(const T& value)
{
if (full()) {
return ;
}
bi = (bi+1) % len;
ptr[bi] = value;
count++;
}
//删除操作,每次只能删除一个队首元素
void pop()
{
if (empty()) {
return ;
}
fi = (fi+1) % len;
count--;
}
//查看队首元素
T& front()
{
return ptr[fi];
}
//查看队尾元素
T& back()
{
return ptr[bi];
}
//求队列长度
int size()
{
return count;
}
//判断队列是否为满,满返回true(1)
bool full()
{
return count==len;
}
判断队列是否为空,空返回true(1)
bool empty()
{
return count==0;
}
private:
//ptr为数组名,即数组的首地址,fi为第一个元素,bi为最后一个元素,len为数组的空间,count为数组的元素个数
T* ptr;
int bi;
int fi;
int len;
int count;
};
int main()
{
//模板函数,此处取int为例
Queue<int> q;
q.push(5);
q.push(3);
q.push(7);
cout << "front : " << q.front() << endl;
cout << "back : " << q.back() << endl;
cout << "size : " << q.size() << endl;
q.pop();
cout << "----------------" << endl;
cout << "front : " << q.front() << endl;
cout << "back : " << q.back() << endl;
cout << "size : " << q.size() << endl;
cout << "empty : " << q.empty() << endl;
}