顺序队列
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 }