#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
#define true 1
#define false 0
typedef int ElemType;
typedef int bool;
typedef struct {
ElemType data[MAXSIZE];
int front, rear;
}Queue,*SQueue;
bool InitQueue(SQueue *Q) {
*Q = (SQueue)malloc(sizeof(Queue));
(*Q)->front = 0;
(*Q)->rear = 0;
}
bool ISEmpty(SQueue Q) {
if (Q->front == Q->rear) {
return true;
}
return false;
}
bool IsFull(SQueue Q) {
if ((Q->rear+1)% MAXSIZE==Q->front) {
return true;
}
return false;
}
bool EnQueue(SQueue Q,ElemType e) {
if (IsFull(Q)) {
return false;
}
Q->data[Q->rear] = e;
Q->rear = (Q->rear + 1)%MAXSIZE;
return true;
}
bool DeQueue(SQueue Q, ElemType *e) {
if (ISEmpty(Q)) {
return false;
}
*e = Q->data[Q->front];
Q->front = (Q->front+1) % MAXSIZE;
return true;
}
//获取队头元素的值
bool GetHead(SQueue Q, ElemType* e) {
if (ISEmpty(Q)) {
return false;
}
*e = Q->data[Q->front];
return true;
}
int main() {
SQueue Q;
InitQueue(&Q);
for (int i = 0; i < 4; i++) {
EnQueue(Q, i);
}
ElemType e;
GetHead(Q, &e);
printf("%d\n", e);
while(!ISEmpty(Q)) {
DeQueue(Q, &e);
printf("%d ", e);
}
printf("\n");
system("pause");
return 0;
}