#include <stdio.h>
#include <stdlib.h>
typedef struct Queue {
int *data;
int front;
int rear;
int maxSize;
int flag;
} Queue;
//创建队列
void BuildQueue(Queue *Queue, int MaxSize)
{
Queue->data = (int*)malloc(MaxSize * sizeof(int));
Queue->front = Queue->rear = 0;
Queue->maxSize = MaxSize;
Queue->flag = 0;
}
//入队
void EnQueue(Queue *Queue, int item)
{
if( Queue->flag == 1 && Queue->rear+1 > Queue->front)
printf("队列溢出了\n");
if(Queue->rear == Queue->maxSize - 1){
Queue->flag = 1;
}
Queue->rear = (Queue->rear + 1) % Queue->maxSize;
Queue->data[Queue->rear] = item;
printf("入队元素:%d\n", item);
}
int DeQueue(Queue *Queue)
{
if (Queue->front == Queue->rear && Queue->flag == 0) {
printf("队列为空!\n");
return -1;
}
if(Queue->front == Queue->maxSize - 1)
Queue->flag = 0;
Queue->front = (Queue->front + 1) % Queue->maxSize;
printf("出队元素:%d\n", Queue->data[Queue->front]);
return Queue->data[Queue->front];
}
int main()
{
int MaxSize = 5;
Queue Q;
BuildQueue(&Q, MaxSize);
EnQueue(&Q, 1);
EnQueue(&Q, 2);
EnQueue(&Q, 3);
EnQueue(&Q, 4);
EnQueue(&Q, 5);
EnQueue(&Q, 6);
DeQueue(&Q);
DeQueue(&Q);
DeQueue(&Q);
DeQueue(&Q);
EnQueue(&Q, 7);
EnQueue(&Q, 8);
EnQueue(&Q, 9);
EnQueue(&Q, 10);
DeQueue(&Q);
return 0;
}
最大大小,maxsize
范围(front,front -1)