#include <iostream>
using namespace std;
#define MAXSIZE 10
typedef char datatype;
struct queue{
public:
void init()
{
front = rear = 0;
}
void in_sert(char e)
{
if(full_queue()==false){
this->data[rear]= e;
this->rear = (this->rear+1)%MAXSIZE;
}else{
cout<<"队列已满"<<endl;
return;
}
}
//判断队列是否为满
bool full_queue()
{
if(this->front==(this->rear+1)%MAXSIZE){
return true;
}else{
return false;
}
}
//判断队列是否为空
bool empty_queue()
{
if(this->rear==this->front){
return true;
}else {
return false;
}
}
//元素个数
int my_len()
{
return (this->rear-this->front+MAXSIZE)%MAXSIZE;
}
//遍历
void show()
{
for(int i = this->front;i!=this->rear;i=(i+1)%MAXSIZE){
cout<<this->data[i]<<endl;
}
}
//出队
void pop()
{
if(empty_queue()== false){
cout<<"出队的元素:"<<this->data[this->front]<<endl;
this->front = (this->front+1)%MAXSIZE;
}else {
cout<<"队列已空"<<endl;
return;
}
}
private:
datatype data[MAXSIZE];
int front;
int rear;
};
int main()
{
queue q;
char e = 0;
q.init();
while(1){
cout<<"请输入...";
cin>>e;
getchar();
if(e == '#' || q.full_queue()){
break;
}
q.in_sert(e); //插入
}
q.show(); //遍历
cout<<"元素个数:"<<q.my_len()<<endl; //元素的个数
q.pop();
q.pop(); //出队
return 0;
}