您的位置:首页 > 编程语言

循环队列的基本操作之代码实现_legend

2014-06-10 15:18 525 查看
#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  循环队列
相关文章推荐