#include <stdlib.h>
#include <stdio.h>
#define datatype int
#define maxsize 10
typedef struct {
datatype data[maxsize];
int front;
int rear;
} SeQueue;
void InitQueue(SeQueue *&sq) {
sq = (SeQueue *)malloc(sizeof(SeQueue));
sq->front = sq->rear = 0;
}
void SetNull (SeQueue *sq) {
sq->front = sq->rear = 0;
}
int Length (SeQueue *sq) {
return (sq->rear - sq->front + maxsize) % maxsize;
}
int EnQueue(SeQueue *sq, datatype x)
{
if (sq->front == (sq->rear + 1) % maxsize) {
printf("队列上溢");
return (0);
} else {
sq->rear = (sq->rear + 1) % maxsize;
sq->data[sq->rear] = x;
return (1);
}
}
int DeQueue (SeQueue *sq, datatype &x)
{
if (sq->front == sq->rear) {
printf("队列下溢");
return (0);
} else {
sq->front = (sq->front + 1) % maxsize;
x = sq->data[sq->front];
return (1);
}
}
int GetFront (SeQueue *sq, datatype &x)
{
if (sq->front == sq->rear) {
printf("队列下溢");
return (0);
} else {
x = sq->data[(sq->front + 1) % maxsize];
return (1);
}
}
int main() {
int flag;
SeQueue *sq;
InitQueue(sq);
datatype val;
flag = EnQueue(sq, 1);
flag = EnQueue(sq, 2);
flag = EnQueue(sq, 3);
flag = DeQueue(sq, val);
printf("出队列的值为%d\n", val);
flag = DeQueue(sq, val);
printf("出队列的值为%d\n", val);
GetFront(sq, val);
printf("队列的队头元素值为%d\n", val);
return 0;
}