#include <stdio.h>
#include <stdlib.h>
typedef struct QUEUE {
int* arr;
int size;
int capacity;
int start;
int end;
}Queue;
Queue* Queue_Init(int initsize)
{
if (initsize <=0)
{
printf("The init size is less than 0\n");
exit(0);
}
Queue* queue = (Queue*)malloc(sizeof(Queue));
if (queue == NULL)
{
return NULL;
}
queue->capacity = initsize;
queue->arr = (int*)malloc(sizeof(int)* queue->capacity);
queue->end = 0;
queue->size = 0;
queue->start = 0;
return queue;
}
void push(Queue* queue,int data)
{
if (queue == NULL)
{
return;
}
if (queue->size == queue->capacity)
{
printf("The queue is full\n");
exit(0);
}
queue->arr[queue->end] = data;
queue->end = queue->end == queue->capacity - 1 ? 0 : queue->end + 1;
queue->size++;
}
int peek(Queue* queue)
{
if (queue == NULL)
{
return -1;
}
if (queue->size == 0) {
printf("The queue is empty\n");
exit(0);
}
return queue->arr[queue->start];
}
int poll(Queue* queue) {
if (queue == NULL)
{
return -1;
}
if (queue->size == 0)
{
printf("The queue is empty\n");
exit(0);
}
int tmp = queue->start;
queue->start = queue->start == queue->capacity - 1 ? 0 : queue->start +1 ;
queue->size--;
return queue->arr[tmp];
}
int main()
{
//创建队列
Queue* queue = Queue_Init(-9);
//插入数据
push(queue,7);
push(queue, 6);
int value=poll(queue);
printf("value=%d\n",value);
push(queue, 5);
push(queue,4);
value = poll(queue);
printf("value=%d\n", value);
printf("end=%d\n",queue->end);
printf("capacity=%d\n", queue->capacity);
printf("size=%d\n", queue->size);
printf("start=%d\n", queue->start);
system("pause");
return 0;
}