/*静态数组队列(循环队列):C语言实现版*/
/*特点:队列大小固定,可以防止伪溢出发生*/
#include <stdio.h>
#include <stdlib.h>
/*定义队列*/
#define MAX_Q_SIZE 5 /*最大队列长度+1 ,实际长度为4*/
typedef struct {
int *base ; /*初始化时分配存储空间,假设元素类型为int*/
int front ; /*头指针,实际上为数组下标*/
int rear ; /*尾指针,实际上为数组下标*/
} Queue ;
/*1、队列初始化(构造一个空队列,提前分配好空间)*/
int QueueInit(Queue *Q){
Q->base = (int *)malloc(MAX_Q_SIZE*sizeof(int)) ; /*提前分配好空间*/
if(!Q->base)
return -1 ;
Q->front = Q->rear = 0 ; /*空队列*/
return 0 ;
}
/*2、清空队列(不释放分配的空间,注意和销毁队列的区别)*/
void ClearQueue(Queue *Q){
Q->front = Q->base = 0 ;
}
/*3、销毁队列(释放base指向空间)*/
void DestroyQueue(Queue *Q){
if(Q->base)
free(Q->base) ;
Q->base = NULL ;
Q->front = Q->rear = 0 ; /*将头尾指针置零*/
}
/*4、判断是否为空队列:Q->front == Q->rear*/
int QueueEmpty(Queue *Q){
if(Q->front == Q->rear)
return -1 ;
return 0 ;
}
/*5、求队列长度 :(Q->rear - Q->
静态数组队列(循环队列)基本操作
最新推荐文章于 2025-05-21 09:03:12 发布