数据结构与算法分析—循环队列的数组实现(C语言)

本文介绍了循环队列的数组实现,重点在于如何处理队列的满和空状态。通过利用队列的特性,讨论了使用数组创建循环队列时可能出现的问题及解决方案,并提到了在实际应用中如PTA双端队列题目中队列与其他数据结构的结合使用。
摘要由CSDN通过智能技术生成

数据结构与算法分析—循环队列的数组实现(C语言)

 

队列,也是一种表,使用队列的时候在表的末端队尾插入元素,在表的开头删除元素,因为先插入的元素先被访问,故队列又称为先进先出表,其基本操作为进队与出队,对应着插入与删除,也要先进行相应的判空判满

队列可以用链表实现,也可以用数组实现,这里用数组实现,每一个队列都有Fron和Rear来指向队头和队尾,我这里实现的是循环队列,值得注意的是何时为满,何时为空,如果Front与Rear同时指向一个位置为空,但是我们发现队列满的时候Front与Rear也同时指向同一个位置,这是为什么呢,举个例子,一个能存储6个元素的队列,队列总共有0,1,2,3,4,5,6种状态,而Front与Rear的差值只有0,1,2.,3,4,5种状态,根本不可能用5种状态来表示6种状态,有两种解决的方法,用一个Size变量来记录队列里元素的多少。或者用一个tag,删除的时候标记为1,插入的时候标记为0,当Front与Rear相等时判断即可。另外一种方法就是我们用n-1个空间,代码用第二种方法实现

之前做PTA上的题,有道题为Deque双端队列,把栈 链表 队列的知识综合在一起了,挺不错的。

 

#include<stdio.h>
#include<stdlib.h>

struct QueueRecord;
typedef struct QueueRecord* 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值