头文件
#ifndef HEADER_H
#define HEADER_H
#define MAX 20
class Queue
{
private:
int front;
int tail;
int *data;
public:
//创建
void creat();
//判空
bool empty();
//判满
bool full();
//入队
void push(int n);
//出队
void pop();
//遍历队列
void show();
//求队列长度
int size();
//销毁
void destroy();
};
#endif // HEADER_H
源文件
#include<header.h>
#include<iostream>
using namespace std;
//创建
void Queue::creat()
{
front=0;
tail=0;
data=new int[MAX];
cout<<"创建成功"<<endl;
}
//判空
bool Queue::empty()
{
return front==tail;
}
//判满
bool Queue::full()
{
return (tail+1)%MAX == front;
}
//入队
void Queue::push(int n)
{
if(full())
{
cout<<"入队失败"<<endl;
return;
}
data[tail] = n;
tail = (tail+1)%MAX;
cout<<"入队成功"<<endl;
}
//出队
void Queue::pop()
{
if(empty())
{
cout<<"出队失败"<<endl;
return;
}
front = (front+1)%MAX;
cout<<"出队成功"<<endl;
}
//遍历队列
void Queue::show()
{
if(empty())
{
cout<<"遍历失败"<<endl;
return;
}
cout<<"队伍中从对头到队尾元素分别是:"<<endl;
for(int i=front; i!=tail; i=(i+1)%MAX)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
//求队列长度
int Queue::size()
{
int i= (tail+MAX-front)%MAX;
cout<<"队列长度为"<<i<<endl;
return i;
}
//销毁
void Queue::destroy()
{
delete []data;
data = nullptr;
cout<<"销毁成功"<<endl;
}
测试代码
#include <iostream>
#include<header.h>
using namespace std;
int main()
{
Queue q;
//创建
q.creat();
// 判空
q.empty();
// 判满
q.full();
//入队
q.push(3);
q.push(2);
q.push(6);
q.push(7);
q.push(2);
q.push(0);
//遍历队列
q.show();
//出队
q.pop();
q.pop();
q.pop();
//遍历队列
q.show();
//求队列长度
q.size();
//销毁
q.destroy();
测试结果