线性表-顺序队列(循环队列)

  1: //sqqueue.cpp

  2: 

  3: #include "sqqueue.h"

  4: 

  5: SqQueue::SqQueue()

  6: {

  7:   front = 0;

  8:   rear = 0;

  9: }

 10: 

 11: SqQueue::~SqQueue()

 12: {

 13: 

 14: }

 15: 

 16: void  SqQueue::ClearQueue()

 17: {

 18:   front = 0;

 19:   rear = 0;

 20: }

 21: 

 22: bool  SqQueue::IsEmpty()

 23: {

 24:   return ( rear == front );

 25: }

 26: 

 27: void  SqQueue::EnQueue(int item)

 28: {

 29:   if( (rear + 1) % MAXSIZE == front )

 30:   {

 31:     cerr<<"queue is full"<<endl;

 32:     exit(1);

 33:   }

 34:   else

 35:   {

 36:     data[rear] = item;

 37:     rear = (rear + 1) % MAXSIZE;

 38:   }

 39: }

 40: 

 41: void  SqQueue::DeQueue()

 42: {

 43:   if(rear == front)

 44:   {

 45:     cerr<<"queue is empty."<<endl;

 46:     exit(1);

 47:   }

 48:   else

 49:   {

 50:     front = (front + 1) % MAXSIZE;

 51:   }

 52: }

 53: 

 54: int  SqQueue::GetLength()

 55: {

 56:   return (rear - front + MAXSIZE) % MAXSIZE;

 57: }

 58: 

 59: void  SqQueue::PrintQueue()

 60: {

 61:   int temp = front;

 62:   while(temp != rear)

 63:   {

 64:     cout<<data[temp++]<<endl;

 65:   }

 66: }

 

  1: //sqqueue.h

  2: 

  3: #ifndef SQQUEUE_H_H

  4: #define SQQUEUE_H_H

  5: 

  6: #include <iostream>

  7: #define MAXSIZE 10

  8: 

  9: using namespace std;

 10: 

 11: class SqQueue

 12: {

 13:   int data[MAXSIZE];

 14:   int front;

 15:   int rear;

 16: public:

 17:   SqQueue();

 18:   ~SqQueue();

 19:   void ClearQueue();

 20:   bool IsEmpty();

 21:   void EnQueue(int item);

 22:   void DeQueue();

 23:   int GetLength();

 24:   void PrintQueue();

 25: };

 26: 

 27: #endif

 

  1: //test.cpp

  2: #include "sqqueue.h"

  3: 

  4: #include <iostream>

  5: 

  6: using namespace std;

  7: 

  8: int main(int argc, char *argv[])

  9: {

 10:   SqQueue * queue = new SqQueue;

 11:   queue->EnQueue(1);

 12:   queue->EnQueue(2);

 13:   queue->EnQueue(3);

 14:   queue->EnQueue(4);

 15:   queue->EnQueue(5);

 16:   queue->PrintQueue();

 17:   

 18:   queue->DeQueue();

 19:   queue->PrintQueue();

 20:   queue->DeQueue();

 21:   queue->PrintQueue();

 22:   queue->DeQueue();

 23:   queue->PrintQueue();

 24:   if(queue->IsEmpty())

 25:     cout<<"queue is empty."<<endl;

 26:   queue->ClearQueue();

 27:   queue->PrintQueue();

 28:   if(queue->IsEmpty())

 29:     cout<<"queue is empty."<<endl;

 30:   cout<<"length is "<<queue->GetLength()<<endl;

 31:   

 32:   return 0;

 33: }

你可能感兴趣的:(线性表)