1 #include <iostream>
2 #define MAXSIZE 50
3 #define QUEUEELEMENTTYPE int
4 using namespace std;
5
6 struct SeqQueue
7 {
8 QUEUEELEMENTTYPE element[MAXSIZE];
9 int front;
10 int rear;
11 };
12
13 void InitQueue(SeqQueue * Q)
14 {
15 Q->front = Q->rear = 0;
16 }
17
18 int EnterQueue(SeqQueue * Q , QUEUEELEMENTTYPE x)
19 {
20 if((Q->rear+1)%MAXSIZE == Q->front)
21 return false;
22 Q->element[Q->rear] = x;
23 Q->rear = (Q->rear+1)%MAXSIZE;
24 return true;
25 }
26
27 int DeleteQueue(SeqQueue * Q , QUEUEELEMENTTYPE &x)
28 {
29 if(Q->front == Q->rear)
30 return false;
31 x = Q->element[Q->front];
32 Q->front = (Q->front+1)%MAXSIZE;
33 return true;
34 }
35
36 int IsEmpty(SeqQueue * Q)
37 {
38 if(Q->front==Q->rear)
39 return true;
40 return false;
41 }
42
43 int IsFull(SeqQueue * Q)
44 {
45 if((Q->rear+1)%MAXSIZE == Q->front)
46 return true;
47 return false;
48 }
49
50 void PrintQueue(SeqQueue * Q)
51 {
52 if(Q->rear-Q->front>=0)
53 {
54 for(int k=Q->front;k<Q->rear;k++)
55 cout << Q->element[k] << " ";
56 }
57 else
58 {
59 for(int i=Q->front;i<MAXSIZE;i++)
60 cout << Q->element[i] << " ";
61 for(int j=0;j<Q->rear;j++)
62 cout << Q->element[j] << " ";
63 }
64 cout << endl;
65 }
66
67 int main()
68 {
69 SeqQueue *Q=new SeqQueue;
70 InitQueue(Q);
71 cout << "before insert datas is empty " << IsEmpty(Q) << endl;
72 for(int i=0;i<10;i++)
73 EnterQueue(Q,i);
74 cout << "after insert datas is empty " << IsEmpty(Q) << endl;
75 cout << "after insert 10 datas isfull " << IsFull(Q) << endl;
76 PrintQueue(Q);
77 int x=-1;
78
79 for(int j=0;j<5;j++)
80 {
81 DeleteQueue(Q,x);
82 cout << x << endl;
83 }
84 PrintQueue(Q);
85 for(int k=0;k<60;k++)
86 EnterQueue(Q,k);
87 cout << "after insert 60 datas isfull " << IsFull(Q) << endl;
88 PrintQueue(Q);
89 return 0;
90 }