手动封装一个循环顺序队列类(Stack)
私有成员属性:存放队列的数组、两个变量分别记录队头和队尾下标
公有成员函数: 入队(push( type value ))
出队(pop())
展示(show)
求队列长度(size()):要求时间复杂度在常量级别
判满( bool full())
判空(bool empty())
main.cpp
#include "head.h"
int main()
{
int data ;
FIFO * queue = new FIFO ;
cout << "请输入3个元素"<<endl;
for (int i = 0 ; i < 3; i++)
{
cout << "第"<<i+1<<"个元素"<<endl;
cin >> data;
queue ->push(data);
}
cout<<"======================"<<endl;
queue->output();
cout<<"表长为"<<queue->size()<<endl;
cout<<"======================"<<endl;
queue->pop();
cout << "出队后" << endl;
queue->output();
cout<<"表长为"<<queue->size()<<endl;
return 0;
}
fun.cpp
#include "head.h"
bool FIFO::judge_empty()
{
if (rear == front)
{
return true;
}
return false;
}
bool FIFO:: judge_overflow()
{
if (front == (rear+1)% Maxsize)
{
return true;
}
return false;
}
int FIFO::push(int data)
{
if(!judge_overflow())
{
this -> data [rear] = data;
rear = (rear + 1 ) % Maxsize ;
return 0;
}
cout << "队列已满" << endl;
return -1;
}
int FIFO::pop()
{
if(!judge_empty())
{
cout << "出队的元素为" << this -> data[front] << endl;
this->front = (front + 1) % Maxsize;
return 0;
}
cout << "队列为空"<<endl;
return -1 ;
}
void FIFO::output()
{
if(!judge_empty())
{
for(int i = this->front ; i != this -> rear ; i = (i+1)%Maxsize)
{
cout << this -> data[i] << endl;
}
return ;
}
cout << "队列为空"<<endl;
return ;
}
int FIFO :: size()
{
return (Maxsize - (this->front) + (this->rear)) % Maxsize;
}
head.h
#ifndef HEAD_H
#define HEAD_H
#include <iostream>
#define Maxsize 8
using namespace std;
class FIFO
{
int data [Maxsize];
int rear = 0 ;
int front = 0 ;
bool judge_empty();
bool judge_overflow();
public:
int push (int data);
int pop();
void output();
int size();
};
#endif // HEAD_H