头文件:
#ifndef HEADER_H
#define HEADER_H
class Queue
{
private:
int *data;
int front;
int tail;
int max;
public:
void init(int size);
int queue_empty();
int queue_full();
void queue_push(int e);
void queue_pop();
void queue_show();
int queue_size();
void queue_delete();
};
#endif // HEADER_H
源文件:
#include <iostream>
#include<header.h>
using namespace std;
//初始化
void Queue::init(int size)
{
max=size;
data = new int[size];
front = 0;
tail = 0;
}
//判空
int Queue::queue_empty()
{
return front==tail;
}
//判满
//判满
int Queue::queue_full()
{
return (tail+1)%max==front;
}
//入队
void Queue::queue_push(int e)
{
//判断逻辑
if(queue_full())
{
cout<<"入队失败"<<endl;
return;
}
data[tail]=e;
//队尾后移
tail=(tail+1)%max; //兼顾特殊状态
cout<<"入队成功"<<endl;
}
//出队
void Queue::queue_pop()
{
if(queue_empty())
{
cout<<"出队失败"<<endl;
return;
}
cout<<data[front]<<":出队成功"<<endl;
//队头后移
front=(front+1)%max;
}
//遍历队
void Queue::queue_show()
{
//判断逻辑
if(queue_empty())
{
cout<<"遍历失败"<<endl;
return;
}
//遍历逻辑
cout<<"队伍中从对头到队尾元素分别是:";
for(int i=front; i!=tail; i=(i+1)%max)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
//求队列长度
int Queue::queue_size()
{
if(front==tail)
{
cout<<"查找失败"<<endl;
return -1;
}
return (tail+max-front)%max;
}
//销毁
void Queue::queue_delete()
{
delete []data;
data=nullptr;
cout<<"队销毁成功"<<endl;
}
测试文件:
#include<header.h>
using namespace std;
int main()
{
Queue s1;
//初始化
s1.init(10);
//入队
s1.queue_push(1);
s1.queue_push(3);
s1.queue_push(16);
s1.queue_push(5);
s1.queue_push(6);
s1.queue_push(9);
//遍历
s1.queue_show();
//出队
s1.queue_pop();
s1.queue_pop();
s1.queue_pop();
//求队列长度
s1.queue_size();
//销毁队列
s1.queue_delete();
return 0;
}
运行效果: