老师都会讲那几个式子的,记住那几个条件就可以了
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define MaxSize 19
typedef struct {
int data[MaxSize];
int front, rear;
}SqQueue;
/*这里主要实现环形队列,判满条件是(rear+1)/MaxSize==q->front,这样会浪费一个存储空间*/
/*判空条件是rear==front*/
bool enQueue(SqQueue* q, int e)
{
if ((q->rear + 1)%MaxSize == q->front)
{
return false;
}
q->rear = (q->rear + 1) % MaxSize;
q->data[q->rear] = e;
return true;
}
bool deQueue(SqQueue* q, int* e)
{
if ((q->rear + 1) % MaxSize == q->front)
{
return false;
}
q->front = (q->front + 1) % MaxSize;
*e = q->data[q->front];
return;
}
int main()
{
SqQueue q;
q.rear = 0;
q.front = 0;
int data;
enQueue(&q, 5);
printf("%d\n", q.data[q.rear]);
deQueue(&q, &data);
printf("%d", data);
return 0;
}
下面是运行结果