C_DS_AIgo/array_queue.c

87 lines
2.2 KiB
C
Raw Normal View History

2025-03-25 18:09:23 +08:00
#include <stdio.h>
#include <stdlib.h>
#include "array_queue.h"
/*@-------------
# 设计思路更新(原版漏洞太多):
,rear == size时,[0],``
## 实现思路:
,使rear和front都在数组的[0,size-1],.
# 有点解析:
使\n
使使
@-------------*/
// 初始化队列
array_queue *init_array_queue()
{
array_queue *q = (array_queue *)malloc(sizeof(array_queue));
if (q == NULL)
{printf("error: malloc failed[From init_queue]"); return NULL;}
memset(q,0,sizeof(array_queue));
q->front = 0;
q->rear = 0;
q->size = 0;
return q;
}
// 判空
int empty_array_queue(array_queue *q)
{
if (q->size == 0)
return 1;
else
return 0;
}
// 判断满
int full_array_queue(array_queue *q)
{
if (q->size == MAX_QUEUE)
return 1;
else
return 0;
}
// 入队
void push_array_queue(array_queue *q, elem_type value)
{
if (full_array_queue(q))
{printf("error: queue is full[From push_queue]"); return;}
q->data[q->rear] = value;
q->rear = (q->front + q->size +1) % MAX_QUEUE;
q->size++;
}
// 出队
elem_type pop_array_queue(array_queue *q)
{
if (empty_array_queue(q))
{printf("error: queue is empty[From pop_queue]"); return -1;}
elem_type value = q->data[q->front];
q->front = (q->front + 1) % MAX_QUEUE;
q->size--;
return value;
}
// 打印队列
void print_array_queue(array_queue *q)
{
if (empty_array_queue(q))
{
printf("error :\n");
return ;
}
for (int i=0;i<q->size;i++)
{
printf("[");
printf("%d ",q->data[i%MAX_QUEUE]);
printf("]\n");
}
}
// void return def => fuck shit
// if for while malloc def sleep pause NULL
// #include $time_noon