顺序队列

  1 #include "iostream"
  2 using namespace std;
  3 
  4 #define MAXLENGTH 20
  5 typedef struct Queue
  6 {
  7     int array[MAXLENGTH];
  8     //first指向将要被删除的元素的下标,tail指向可以被插入元素的位置
  9     int first,tail;
 10 }Queue;
 11 
 12 void initial(Queue *queue)
 13 {
 14     queue->first = 0;
 15     queue->tail = 0;
 16 }
 17 
 18 //入队
 19 bool enq(Queue *queue,int elem)
 20 {
 21     //我的想法
 22 //    if (queue->tail == MAXLENGTH-1)
 23 //    {
 24 //        cout<<"overflow!"<<endl;
 25 //        return false;
 26 //    }
 27     queue->array[queue->tail] = elem;
 28 
 29     if (queue->tail == MAXLENGTH-1)
 30     {
 31         queue->tail = 0;
 32     }
 33     else
 34     {
 35         queue->tail++;
 36     }
 37 
 38     if (queue->tail == queue->first)
 39     {
 40         cout<<"overflow !"<<endl;
 41         return false;
 42     }
 43     return true;
 44 }
 45 //出队
 46 bool deq(Queue *queue)
 47 {
 48     if (queue->tail == queue->first)
 49     {
 50         cout<<"underflow !"<<endl;
 51         return false;
 52     }
 53     else if (queue->first == MAXLENGTH -1)
 54     {
 55         queue->first = 0;
 56     }
 57     else
 58     {
 59         queue->first++;
 60     }
 61     return true;
 62 }
 63 
 64 void print(Queue queue)
 65 {
 66     int i = queue.first;
 67     while (i != queue.tail)
 68     {
 69         cout<<queue.array[i]<<endl;;
 70         i++;
 71     }
 72 }
 73 //判断队列是否为空
 74 bool isempty(Queue queue)
 75 {
 76     return queue.first == queue.tail;
 77 }
 78 
 79 //读取队首元素
 80 bool readfront(Queue queue,int *elem)
 81 {
 82     if (isempty(queue))
 83     {
 84         return false;
 85     }
 86     *elem = queue.array[queue.first];
 87     return true;
 88 }
 89 
 90 
 91 int main()
 92 {
 93     Queue queue;
 94     initial(&queue);
 95 
 96     enq(&queue,1);
 97     enq(&queue,2);
 98     print(queue);
 99     cout<<"------------------------"<<endl;
100     deq(&queue);
101     print(queue);
102 
103     cout<<"--------------------------"<<endl;
104     int elem;
105     if(readfront(queue,&elem))
106     {
107         cout<<elem<<endl;
108     }
109     return 0;
110 }

 

 

posted @ 2013-09-04 17:06  Big.Eagle  阅读(218)  评论(0编辑  收藏  举报