队列的顺序存储结构与操作

来源:互联网 发布:淘宝手机端显示宝贝 编辑:程序博客网 时间:2024/03/29 01:42

题目描述:


请定义一个顺序队列,可以对队列进行“入队”、“出队”、“清空队列”、“获取队首元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,队列的元素为字母, 队列的最大元素个数为100。


输入样例:


E aGCE bDDQ

输出样例:


abNone

输入描述:


输入各个命令,它们对应的格式如下:
入队:E a,a代表入队的元素,这里E和元素之间用空格分隔。
清空队列:C
获取队头元素:G
队头元素出队列:D
当输入的命令为Q时,程序结束。


输出描述:


当输入的命令为D时,输出出队的元素值;
当输入的命令是G时,输出当前队首元素值;
如果没有元素可出队或可取,请输出None;如果入队时,队列已满,输出Queue Full;
输出的元素各占一行。

 

 

#include<iostream>
using namespace std;
const int maxsize=100;
class CirQuene
{
public:
    CirQuene(){front=rear=-1;}
 ~CirQuene(){}
 void EmptyCirQuene(){front=rear=-1;}
 void EnQuene(char x);
 void DeQuene();
 char GetQuene();
 int Empty();
private:
 char data[maxsize];
 int front,rear;
};
int CirQuene::Empty()
{
 if(front==rear)
  return 1;
 else 
  return 0;
}
void CirQuene::EnQuene(char x)
{
 if((rear+1)%maxsize==front)
  cout<<"Queue Full"<<endl;
    rear=(rear+1)%maxsize;
    data[rear]=x;
}
void CirQuene::DeQuene()
{
 if(rear==front)
 {
  cout<<"None"<<endl;
 }
 else
 {
  front=(front+1)%maxsize;
  cout<<data[front]<<endl;
 }
}
char CirQuene::GetQuene()
{
 if(rear==front)
 {
  cout<<"None"<<endl;
 }
 else
 {
  int i=(front+1)%maxsize;
  return data[i];
 }
 return 0;
}
int main()
{
    CirQuene C;
 char ch,item;
 while(cin>>ch&&ch!='Q')
 {
  if(ch=='E')
  { 
   cin>>item;
   C.EnQuene(item);
  }
  if(ch=='D')
  {
   C.DeQuene();
  }
  
  if(ch=='G')
  {
   cout<<C.GetQuene()<<endl;
  }
  if(ch=='C')
  {
   C.EmptyCirQuene();
  }
 }
 return 0;
}