循环顺序队列类
#include <iostream>
#define MAXSIZE 8
using namespace std;
typedef int datatype;
class stack
{
public:
bool full_stack() //判断对满
{
if((last+1)%MAXSIZE == front)
return true;
else
return false;
}
bool empty_stack() //判断对空
{
if(last == front)
return true;
else
return false;
}
void push(datatype value) //入队
{
if(!full_stack())
{
arr[last] = value;
last = (last+1)%MAXSIZE;
}else
{
cout<<"队列已满"<<endl;
return ;
}
}
void pop() //出队
{
if(!empty_stack())
{
front = (front+1)%MAXSIZE;
}else
{
cout<<"队列为空"<<endl;
return;
}
}
void output() //遍历
{
if(empty_stack())
{
cout<<"队列为空"<<endl;
return ;
}
cout<<"遍历结果"<<endl;
for(int i = front;i != last;(i++)%MAXSIZE )
{
cout<<"第"<<(i+9-front)%MAXSIZE<<"个数据 :";
cout<<arr[i] <<endl;
}
}
int size_stack() //求队列长度
{
return (MAXSIZE - front + last)%MAXSIZE;
}
private:
datatype arr[MAXSIZE];
int front = 0;
int last = 0;
};
int main()
{
stack s1;//
datatype a; //存储输入数据
int n = 0; //存储数据个数
while(n<=0||n>8)
{
cout<<"输入数据个数"<<endl;
cin>>n;
}
//循环输入数据
for(int i = 0;i<n;i++)
{
cout<<"第"<<i+1<<"个数据 :";
cin>>a;
getchar();
s1.push(a);
}
//遍历数据
s1.output();
//删除数据并遍历数据
cout<<"删除数据"<<endl;
s1.pop();
s1.output();
//队列长度
cout <<"队列长度 :"<<s1.size_stack()<<endl;
return 0;
}
运行结果