顺序队列的实现
前言
顺序队列是队列的顺序存储结构。根据front和rear在初始化时的初值不同,顺序队列的实现可分为两类:
一是front=rear=0;
二是不相等
下面仅探讨第一种情况。
提示:以下是本篇文章正文内容,下面案例可供参考
一、顺序队列是什么?
顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表。和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置。
二、代码实现
1.当front=rear=0且牺牲一个位置时
a:这种情况会牺牲一个位置
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef struct {
int data[MAXSIZE];
int front,rear;
}SqQueue;
bool InitQueue(SqQueue &q){
//初始化队列
q.front=0;
q.rear=0;
}
bool IsEmpty(SqQueue q){
//判空
if(q.front==q.rear)
return false;
}
bool IsFull(SqQueue q){
//判满
if((q.rear+1)%MAXSIZE==q.front)
return false;
}
//上述顺序队列的实现方式会牺牲一个位置
bool EnterQueue(SqQueue &q){
//进队列
if((q.rear+1)%MAXSIZE==q.front)
return false;
int x