循环队列的基本操作之代码实现_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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值