队列的实现:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
typedef int Element;
#define MAX_QUEUE_LENGTH 10
struct Queue {
Element queue[MAX_QUEUE_LENGTH];
int front;
int rear;
int length;
};
void Init(struct Queue* queue)
{
memset(queue->queue, 0, sizeof(Element) * MAX_QUEUE_LENGTH);
queue->front = 0;
queue->rear = MAX_QUEUE_LENGTH - 1;
queue->length = 0;
}
int Empty(struct Queue* queue)
{
return queue->length == 0;
}
int Length(struct Queue* queue)
{
return queue->length;
}
void Push(struct Queue* queue, Element elem)
{
if (queue->length == MAX_QUEUE_LENGTH) {
return;
} else {
queue->rear++;
if (queue->rear == MAX_QUEUE_LENGTH) {
queue->rear = 0;
}
queue->queue[queue->rear] = elem;
queue->length++;
}
}
void Pop(struct Queue* queue)
{
if (queue->length == 0) {
return;
} else {
queue->front++;
if (queue->front == MAX_QUEUE_LENGTH) {
queue->front = 0;
}
queue->length--;
}
}
Element Front(struct Queue* queue)
{
return queue->queue[queue->front];
}
// following is test code, you can use like this:
int main()
{
struct Queue queue;
Init(&queue);
for (int i = 0; i < 120; i++) {
Push(&queue, i);
}
while (!Empty(&queue)) {
int t = Front(&queue);
printf("%d
", t);
Pop(&queue);
}
return 0;
}