C语言数据结构之FIFO

FIFO(First in First out),插入在表的一端进行,而删除在表的另一端进行,我们将这种数据结构称为队或者队列(就像排队一样,排在前面的先出,很形象)

允许插入的一端称为队尾(rear),允许删除的一端称为(front)

通常我们用得较多的是循环队列

也就是当rear达到fifo的最大值后又指向下标为0的位置。

这里会存在一个问题:正常是根据front==rear判断是否为空,在这里队列为满时,也是front==rear,那怎么区分呢?

方法一:通过标志位,当front==rear时,flag为1,队列满,否则为空

方法二:队列满的条件改为front == rear + 1,也就是队列满时,保留一个元素空间

实际设计中通常会定义数据结构:

struct Fifo_Queue_Tag

{

    SlotDataType Data[FIFO_SIZE];

    QueStdSizeType front;

    QueStdSizeType rear;

}FifoQueueType;

主要操作:

(1)队列初始化:Init_Queue(q)

初始条件: 队q 不存在。

操作结果: 构造了一个空队。

(2)入队操作: In_Queue(q,x),

初始条件: 队q 存在。

操作结果: 对已存在的队列q,插入一个元素x 到队尾,队发生变化。

(3)出队操作: Out_Queue(q,x)

初始条件: 队q 存在且非空

操作结果: 删除队首元素,并返回其值,队发生变化。

(4)判队空操作:Empty_Queue(q)

初始条件: 队q 存在

操作结果: 若q 为空队则返回为1,否则返回为0。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值