齐桡吧 关注:9贴子:1,329
  • 2回复贴,共1
0


1楼2005-11-26 13:11回复
    • 222.43.108.*
    #include<iostream.h>
    #include<stdlib.h>
    #include<conio.h>

    const int QueueNum=6;//the real Num of the Queue is QueueNum-1
    const int ERROR=0;
    const int OK=1;
    const int QueuePre=-1;

    typedef int ElemType;

     //head define....................
    /*************************CONST DEFINE*****************************************/
    //------------------------------------------------------------------------------

    //==============================================================================
    //==================Define of Class Queue_c=====================================


     class Queue_c
     {
     ElemType Q[QueueNum];
     int front,rear;

     public:
     //basic information of the class Queue_c:
     Queue_c();

     int qFull();
     int qEmpty();
     int qEnQueue(ElemType e);
     ElemType qDeQueue();
     int qGetNumber();
     int qGetElem(int);
     int qShowQueue();

    //other functions:
    ElemType qGetFrontElem(){if(qEmpty()){cout<<"ERROR!"<<endl;return ERROR;}return Q[front];}
    //int qGetFront(){if(qEmpty()){cout<<"ERROR!"<<endl;return ERROR;}return front;}
    //ElemType qGetRearElem(){if(qEmpty()){cout<<"ERROR!"<<endl;return ERROR;}return Q[(rear-1+QueueNum)%QueueNum];}
    //int qGetRear(){if(qEmpty()){cout<<"ERROR!"<<endl;return ERROR;}return (rear-1+QueueNum)%QueueNum;}
    //int qShowAll();

     int qDec()
     {
     if(qEmpty()){cout<<"ERROR!"<<endl;return ERROR;}//endif
     Q[front]--;
     return OK;
     }

     };

    //===============END Define of Class Queue_c=====================================
    //==============================================================================

    //==============================================================================
    //==================Define of Class Work_c======================================

     class Work_c
     {
     Queue_c buf;
     public:

     int wCPU();
     int wMakeP();

     int wShowBUF(){return buf.qShowQueue();}
     int wInBUF(int i){return buf.qEnQueue(i);}
     };

    //==================END Define of Class Work_c==================================
    //==============================================================================

    //-----------------------------------------------------------------------------
    /******************************END OF CLASSES DEFINE***************************/


    /*******************************==main==****************************************************
    ********************************==proc==***************************************************/

    /*******************************==main==****************************************************
    ********************************==proc==***************************************************/

     void main()
     {
     Work_c w;
     int i;
     w.wInBUF(5);
     w.wInBUF(3);
     w.wInBUF(1);
     clrscr();
     char flag='y';

     for(i=0;i<10;i++)
     { cout<<"["<<i<<"]:";
     //w.buf.qShowQueue();
     w.wMakeP();
     w.wCPU();
     w.wShowBUF();
     if(9==i)
     {
     cout<<"Are you want to continue?y/n"<<endl;
     cin>>flag;
     if('n'==flag)break;else i=0;
    clrscr();
     }//endif
     }//endfor

     }

    /********************************==END==*****************************************************
    


    2楼2005-11-26 13:27
    回复
      • 222.43.108.*
      *********************************==main==***************************************************/





      /********************************==END==*****************************************************
      *********************************==main==***************************************************/

      /************************Class Queue_c**********************************/
      //================Queue_c================================
      Queue_c::Queue_c()
       {
       int i;
       for(i=0;i<QueueNum;i++)Q[i]=QueuePre;
       rear=0;
       front=0;
       }
      //=====================qFull===========================
       int Queue_c::qFull()
       {
       if((rear+1)%QueueNum==front)
       {//cout<<"Queue is full"<<endl;
       return OK;}
       else return ERROR;
       }
       //================qEmpty================================
       int Queue_c::qEmpty()
       {
       if(rear==front)
       { //cout<<"Queue is Empty"<<endl;
       return OK;
       } //endif
       else return ERROR;
       }
      //===============qEnQueue=================================
       int Queue_c::qEnQueue(ElemType e)
       {
       if(qFull())return ERROR;
       Q[rear]=e;
       rear=(rear+1)%QueueNum;
       return OK;
       }

       //=================qDeQueue===============================
       ElemType Queue_c::qDeQueue()
       {
       ElemType e;
       if(qEmpty())return ERROR;
       e=Q[front];
       Q[front]=QueuePre;
       front=(front+1)%QueueNum;
       return e;
       }


      //===================qGetNumber=============================
       int Queue_c::qGetNumber()
       {int i;
       i=((rear-front+QueueNum)%QueueNum);
       return i;
       }
      //==================qGetElem==============================
       ElemType Queue_c::qGetElem(int i)
       {
       if(qEmpty()){cout<<"ERROR!"<<endl;return ERROR;}
       if(i>qGetNumber()-1)
       {
       cout<<"ERROR! there is no "<<i<<",or no "<<i<<" in Queue now"<<endl;
       return ERROR;
       }
       return Q[(front+i)%QueueNum];

       }

      //======================qShowQueue==========================
       int Queue_c::qShowQueue()
       {int i;
       if(qEmpty())return ERROR;

       for(i=front;i!=rear%QueueNum;i=(i+1)%QueueNum)
       {
       cout<<Q[i]<<" ";
       }//endfor

       cout<<endl;
       return OK;
       }

      //======================qShowAll=========================
      /*int Queue_c::qShowAll()
      {
      int i;
      for(i=0;i<QueueNum;i++)cout<<Q[i]<<" ";
      cout<<endl;
      return OK;
      }*/
      /************************Class Work_c******************************************/
      //======================wCPU=========================
       int Work_c::wCPU()
      { int t;
      buf.qDec();
      if(buf.qGetFrontElem()<=0)buf.qDeQueue();
      return OK;
      }
      //======================wMakeP=========================
      int Work_c::wMakeP()
      {
       int t;
       t=random(200)%2;
       if(t){buf.qEnQueue(random(10)+1);return OK;}
       return ERROR;
      }
      //========================================================
      /**************************End of Class Work_c*********************************/


      3楼2005-11-26 13:27
      回复