#include "pch.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MaxSize 5
typedef struct
{
int data[MaxSize];
int front; // 队头
int rear; // 队尾
}SqQueue;
// 出进队列都先分别先移动其指针,再出队,队列
// 初始化链表
void initQueue(SqQueue &qu)
{
qu.front = qu.rear = 0;
}
// 判断是否为空
int isQueueEmpty(SqQueue qu)
{
if (qu.front == qu.rear)
{
printf("队列为空了");
return 1;
}
else
{
return 0;
}
}
// 留一个空位 来判断队列是否满
// 满了返回1
int isQueueFull(SqQueue qu)
{
if ((qu.rear+1)%MaxSize==qu.front)
{
printf("队列已经满了");
return 1;
}
else
{
return 0;
}
}
// 进入队列
void enterQueue(SqQueue &qu, int x)
{
if (isQueueFull(qu)==1)
{
return ;
}
else
{
qu.rear = (qu.rear + 1) % MaxSize;
qu.data[qu.rear] = x;
return;
}
}
// 获取队列长度
int getQueueLen(SqQueue &qu)
{
return (qu.rear - qu.front + MaxSize) % MaxSize;
}
// 出队列
void deQueue(SqQueue &qu, int &x)
{
if (isQueueEmpty(qu) == 1) {
return ;
}
else{
qu.front = (qu.front + 1) % MaxSize;
x = qu.data[qu.front];
}
}
int main()
{
// 进入队数据
int a[MaxSize-1] = { 9,4,7,8 };
SqQueue squeue;
initQueue(squeue);
for (int i = 0; i < MaxSize-2; i++)
{
enterQueue(squeue,a[i]);
}
int x = 0;
int queuelength = getQueueLen(squeue);
printf("\n 长度为%d:", queuelength);
printf("\n 出队列元素依次为:");
for(int i = 0 ; i< queuelength; i++)
{
deQueue(squeue, x);
printf("%d ", x);
}
}