队列的顺序存储结构

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

队列的顺序存储结构:要预先分配内存,知道队列的最大长度。

初始化队列时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			
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值