【ShawnZhang】带你看数据结构——第六课:队列

经过五讲走来,我想大家一定大概清楚了,我们现在所学习的数据结构也是非常简单,无非就是数组的变化

今天讲解数组的最后一个变形——队列

队列就像排队一样,我们去排队,先来的先排队,后来的排在队尾,不允许插队,中途离开,否则那就是数组而不是队列

出队(队头,front),入队(队尾rear)记住英文,后续会用到

在顺序结构中,队列在内存中的存储都是连续的,相邻的物理单元,就是他们之间的逻辑关系,在初始化的时候,rear和front指针指向数组序号为-1的位置

a1---a2---a3---a4---a5---

例如front++,就是指向a1,rear通过5次自加指向a5,此时,front自加就是出队,rear自加,填入元素,就是入队

进队:rear++; queue[rear]='A'就完成了对A的入队

出队:front++就完成了B的出队,如果有必要,可以设置temp=queue[front]在此之前,来保存出队的数值

初始化:rear=front=-1

长度:rear-front

队空:rear==front

队满:rear-front==MaxSize


接下来我们来讲解一下链式存储,同样的通过malloc函数来进行分配地址空间

例如:

typedef struct node{

int data;

struck node *next;

}JD;

typedef JD * Link;

Link front=NULL;

Link rear=NULL;

初始化链式队列


最后还有一个小知识点,一般的你会发现队有进有出,数据出去了,原来的空间还在那里,会造成浪费

所以也不知道谁想起来把队列连成一个循环,就是到达一定程度,front++之后到达原来的尾部

但是判断空和判断满有冲突,所以,队列空出一个单元,用来区分队满和对空

对空:front==rear

队满:(rear++)%maxsize==front

这便是数据结构,后续我们还将讲解到树状的数据结构,不过由于之前的课程太快,我决定暂停新课,讲解一些代码来复习巩固,如果喜欢,请关注我


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值