实现过程:
测试文件:
#include <iostream>
#include <header.h>
using namespace std;
//2、封装一个循环顺序队列,并封装其相应的操作:判空、入队列、出队、遍历队、求队列长度、销毁
int main()
{
Queue L;
L.init(); //申请栈空间
if(1==L.empty()) //判空
cout<<"队空"<<endl;
else
cout<<"队非空"<<endl;
if(1==L.full()) //判满
cout<<"队满"<<endl;
else
cout<<"队非满"<<endl;
L.in_push(L,3); //入队操作
L.in_push(L,4);
L.in_push(L,5);
L.in_push(L,6);
L.in_push(L,7);
L.show(L); //遍历栈
L.out_pop(L); //出栈
L.out_pop(L);
L.show(L);
cout<<"队列长度是:"<<L.in_size(L)<<endl; //队列长度
L.out_free(L); //释放栈空间
L.show(L);
return 0;
}
源文件:
#include <iostream>
#include <header.h>
using namespace std;
void Queue::init() //申请队列空间
{
cout<<"请输入需要申请空间的大小>>>";
cin>>size;
data = new int[size];
front = 0;
tail = 0;
}
bool Queue::empty() //判空
{
return front==tail;
}
bool Queue::full() //判满
{
return (tail+1)%size==front;
}
void Queue::in_push(Queue &L,int data) //入队
{
if(0==full())
{
L.data[tail]=data;
tail=(tail+1)%size;
cout<<data<<"入队成功"<<endl;
}
else
cout<<data<<"队满,插入失败"<<endl;
}
void Queue::show(Queue &L) //遍历队列
{
cout<<"队中的元素从队头到队尾是:";
for(int i=front;i!=tail;i=(i+1)%size)
{
cout<<L.data[i]<<" ";
}
cout<<endl;
}
void Queue::out_pop(Queue &L) //出队
{
if(0==empty())
{
cout<<L.data[front]<<"出队成功"<<endl;
front=(front+1)%size;
}
else
cout<<"队空,出队失败"<<endl;
}
int Queue::in_size(Queue &L) //队列长度
{
return (tail+size-front)%size;
}
void Queue::out_free(Queue &L) //释放栈空间
{
delete []L.data;
L.data=nullptr;
cout<<"队列已被释放"<<endl;
}
头文件:
#ifndef HEADER_H
#define HEADER_H
class Queue
{
private:
int *data;
int front;
int tail;
public:
int size;
void init(); //申请队列空间
bool empty(); //判空
bool full(); //判满
void in_push(Queue &L,int data); //入队
void show(Queue &L); //遍历队列
void out_pop(Queue &L); //出队
int in_size(Queue &L); //队列长度
void out_free(Queue &L); //释放栈空间
};
#endif // HEADER_H
实现效果: