From 11cb4c430577c8e7888e97e1a2c00dcd7aba7a71 Mon Sep 17 00:00:00 2001 From: ViolentAyang <76544389+ViolentAyang@users.noreply.github.com> Date: Sun, 20 Mar 2022 21:10:26 +0800 Subject: [PATCH] =?UTF-8?q?Create=20=E7=BA=BF=E6=80=A7=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E9=98=9F=E5=88=97=E5=9F=BA=E6=9C=AC=E6=93=8D=E4=BD=9C.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 队列/线性循环队列基本操作.c | 84 +++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 队列/线性循环队列基本操作.c diff --git a/队列/线性循环队列基本操作.c b/队列/线性循环队列基本操作.c new file mode 100644 index 0000000..f0bc44c --- /dev/null +++ b/队列/线性循环队列基本操作.c @@ -0,0 +1,84 @@ +#include +#include +#include +#define MaxSize 10 + +//栈是只允许在一段进行插入或删除操作的线性表 +//队列只允许在一端进行插入,在另一端进行删除的线性表 +//这里的顺序队列以循环队列为例 + +typedef struct{ + int data[MaxSize]; + int front,rear; +}SqQueue; +//初始化队列 +void InitQUeue(SqQueue *S){ + S->front = S->rear = 0; +} +//判断队列是否满 +bool QueueFull(SqQueue S){ + if((S.rear+1)%MaxSize==S.front){ + return true; + } + return false; +} +//判断队列是否为空 +bool QueueEmpty(SqQueue S){ + if(S.front==S.rear){ + return true; + }else{ + return false; + } +} +//入队操作 +bool EnQueue(SqQueue *S,int x){ + if(QueueFull(*S)){ + return false; + } + S->data[S->rear] = x; + S->rear = (S->rear+1)%MaxSize; + return true; +} +//出队操作 +bool DeQueue(SqQueue *S,int* x){ + if(QueueEmpty(*S)){ + return false; + } + *x = S->data[S->front]; + S->front = (S->front+1)%MaxSize; + return true; +} +void PrintQueue(SqQueue S){ + for(int i=S.front;i