数据结构---顺序队列实现

队列即为只允许在一端进行插入数据队列,在另一端进行删除数据操作的特殊线性表。但也有一些例外,如优先级队列。

队列具有先进先出的特性,即最先进入队列的元素将被最先出队列

有时也需要把进入队列中的元素分优先级(比如线程调度),出队列时首先选择优先级最高的元素出队列,对于优先级相同的元素则按照先进先出的原则出队列

顺序队列很容易实现,主要是控制好头和尾,通常用循环的方式实现,避免溢出的问题。基本操作同栈类似,具体注意的点我就在代码中细说了

  • 结构体声明
typedef struct TreeNode* SeqQueueType;

//head作为队首,tail作为队尾
//插入数据时,tail向后移,从队列里删除数据时,head往后移
//数据出队列时其实并没有真实的被删除,而是随着head的后移,之前的队首元素不在有效范围内了
//tail到了数组末尾时,检查一下head是否表示的是数组(不是队列)头部,如果不是的话说明数组的头部还可以插入数据
//作为队列的尾部。直到size等于数组的最大容量时,才说明队列已经满了
typedef struct SeqQueue{
    SeqQueueType data[SeqQueueMaxSize];
    size_t head;
    size_t tail;
    size_t size;
}SeqQueue;
  • 基本操作函数声明
//初始化                      
void SeqQueueInit(SeqQueue* seq);
//入队列             
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值