..bxcvbxb

#include <iostream>



#include <cstring>



using namespace std;







typedef int ElemType;



typedef enum { addq, delq, End } Operation;



typedef struct QNode



{



    ElemType *Data;  /* 存储元素的数组   */



    int Front;     /* 队列的头 */



    int Rear;          /* 队列的尾   */



    int MaxSize;        /* 队列最大容量     */



} Queue;







bool CreateQueue( Queue &Q,int MaxSize ); //创建初始队列



bool AddQ( Queue &Q, ElemType X );//实现入队操作,如果队列已满,AddQ函数必须输出“Queue Full”并且返回false;否则返回true



bool DeleteQ( Queue &Q,ElemType &X);  //实现出队操作,如果队列是空的,则DeleteQ函数必须输出“Queue Empty”,并且返回false,否则将队首的值赋给X,并返回true。



Operation GetOp(); //读取操作指令







int main()



{



    ElemType X;



    Queue Q;



    int N, done = 0;







    cin>>N;



    CreateQueue(Q,N);



    while ( !done )



    {



        switch( GetOp() )



        {



        case addq:



            cin>>X;



            if(!AddQ(Q, X)) cout<<"Queue is Full"<<endl;



            break;



        case delq:



            if( DeleteQ(Q,X) ) cout<<X<<" is out"<<endl;



            break;



        case End:



            while (Q.Front!=Q.Rear)



            {



                DeleteQ(Q,X);



                cout<<X<<" ";



            }



            done = 1;



            break;



        }



    }



    return 0;



}







Operation GetOp()



{



    char op[5];



    cin>>op;



    if (strcmp(op,"Add")==0) return addq;



    if (strcmp(op,"Del")==0) return delq;



    if (strcmp(op,"End")==0) return End;



}



bool CreateQueue( Queue &Q,int MaxSize )



{



    /* 注意:为区分空队列和满队列,需要多开辟一个空间 */



    MaxSize++;



    Q.Data = new ElemType[MaxSize];



    if (Q.Data==NULL) return false;



    Q.Front = Q.Rear=0;



    Q.MaxSize = MaxSize;



    return true;



}

bool AddQ(Queue &Q,ElemType X)

{

 if((Q.Rear+1)%Q.MaxSize==Q.Front) {

        cout<<"Queue Full"<<endl;

        return false;}

    Q.Data[Q.Rear]=X;

  Q.Rear=(Q.Rear+1)%Q.MaxSize;

  return true;

}

bool DeleteQ(Queue &Q,ElemType &X)

{if(Q.Front==Q.Rear) {

cout<<"Queue Empty"<<endl;

   return false;}

   X=Q.Data[Q.Front];

   Q.Front=(Q.Front+1)%Q.MaxSize;

   return true;



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值