队列的顺序存储结构:要预先分配内存,知道队列的最大长度。
初始化队列时Q.rear=Q.front=0;

对尾插入队列元素rear+1,对头删除队列元素front+1,假设当前为队列分配的最大空间为6,则当队列处于图(d)时,再插入元素会溢出队列,然而此时又不宜像顺序栈那样,进行存储再分配扩大数组空间,但是实则队列的实际可用空间并未占满。于是可以假象构造成环状的空间。

但此时Q.rear=Q,front并不能确定是空队列还是满队列,可用两种方法处理: 第一种是设置一个标志位以区分队列是空还是满 ;第二种是少用一个元素空间,约定以 对头指针在队尾指针的下一个位置上时队列为满队列。

C实现循环队列如下:
#include <stdio.h>
#ifndef STATUS_H
#define STATUS_H
/* 状态码 */
#define TRUE 1 //真
#define FALSE 0 //假
#define YES 1 //是
#define NO 0 //否
#define OK 1 //通过
#define ERROR 0 //错误
#define SUCCESS 1 //成功
#define UNSUCCESS 0 //失败
#define INFEASIBLE -1

本文探讨了队列的顺序存储结构,特别是在初始化时如何分配内存并处理队列满和空的情况。当队列达到最大空间且未完全使用时,提出了通过构建环状结构来避免溢出的问题。为了解决无法判断队列状态的问题,文中提到了两种方法:设置标志位和少用一个元素空间作为满队列的标志。并提供了C语言实现循环队列的示例。
最低0.47元/天 解锁文章
5302





