1. 程式人生 > >迴圈佇列的基本操作之程式碼實現_legend

迴圈佇列的基本操作之程式碼實現_legend

#include <iostream>
using namespace std;
#define MaxSize 20
typedef int qElemType;


class SeQueueType{
      public:
      qElemType data[MaxSize];
      int front;
      int rear;


      public:


      /*初始化,建構函式*/
      SeQueueType(){
      front=0;
      rear=0;/*初始化rear=front=0*/
      }


      /*隊空*/
      bool QueueEmpty(){
      if(rear==front)
      return true;
      return false;
      }
      /*隊滿*/
      bool QueueFull(){
      if((rear+1)%MaxSize==front)/*rear的下一個位置時front*/
      return true;
      return false;
      }


      /*進隊*/
      bool en_queue(qElemType elem){


            if(QueueFull()) return false;


            data[rear]=elem;
            rear=(rear+1)%MaxSize;
            return true;
      }


/*進隊以及出隊到底是先++,還是先賦值,沒有明確規定。
      只要進隊與出隊的順序是一致的就可以了。
      即:均先++,在賦值,或者均是先賦值,然後++
      */
      /*出隊*/
      bool de_queue(qElemType& elem){
            if(QueueEmpty()) return false;
            elem=data[front];
            front=(front+1)%MaxSize;
            return true;
      }
      /*獲取隊頭*/
      bool queueFront(qElemType & elem){
            if(QueueEmpty()) return false;
            elem=data[front];
            return true;
      }
      /*隊長*/
      int length(){
      return (rear-front+MaxSize)%MaxSize;
      }


};




int main()
{     SeQueueType seQueue;
      seQueue.en_queue(1);
      seQueue.en_queue(4);
      seQueue.en_queue(3);
      seQueue.en_queue(2);


      int length;
      qElemType elem;
      cout<<"length"<<"  "<<"elem"<<endl;
      length=seQueue.length();
      seQueue.queueFront(elem);
      cout<<length<<"         "<<elem<<endl;






      seQueue.de_queue(elem);
       seQueue.queueFront(elem);
      length=seQueue.length();
      cout<<length<<"         "<<elem<<endl;


    cout << "Hello world!" << endl;
    return 0;
}


---------------------------------------------------------


#include <iostream>
using namespace std;
/*迴圈佇列變形,已知front,size來求rear,以及對佇列的一些操作*/
#define MaxSize 15
typedef int qElemType;


class QueueType{
      public:
      qElemType data[MaxSize];
      int front;
      int size;
      
      public:
      /*初始化資料成員,建構函式*/
      QueueType(){
      front=0;
      size=0;
      }
      
      /*進隊*/
      bool en_queue(qElemType elem){
      if(size == MaxSize)
      return false;
      
      int rear;
      rear=(front+size)%MaxSize;
      data[rear]=elem;
      size++;
      return true;
      }
      
      /*進隊以及出隊到底是先++,還是先賦值,沒有明確規定。
      只要進隊與出隊的順序是一致的就可以了。
      即:均先++,在賦值,或者均是先賦值,然後++
      */
      
      /*出隊*/
      bool de_queue(qElemType & elem){
      if(size==0) retur false;
      
      elem=data[front];
      front=(front+1)%MaxSize;
      size--;
      return true;
      
      }
      
      int length(){
      return size;
      }
      
};




int main()
{
    cout << "Hello world!" << endl;
    return 0;
}