Linux嵌入式开发学习 数据结构:day4

【队列】只允许在两端进行操作的线性表,允许出队的一端叫队头,
允许入队的一端叫队尾,由于队列只允许在两端进行操作,队列的
特点是先进先出(FIFO\LILO)

队列操作:
1.创建队列
2.入队
3.判断队列是否为满(顺序结构)
4.队列是否存在
5.遍历队列
6.判断队列是否为空
7.出队
8.清空队列
9.销毁

【顺序队列】顺序存储的队列,又叫循环队列,对于队列来说先进先出,
顺序队列通过队尾入队,队头出队,当队尾元素到最大下标位置时
无法再入队,否则会出现内存溢出,这里叫“假溢出”,队头出队,
出队后队列前面有可用空间但是无法利用,这就是“假溢出”,
为了解决假溢出的现象,我们采用“变量+1再%数组最大长度”的方式
去进行运算

    这里我们定义两个变量:front和rear,若front标识队头,reat
    标识队尾,最开始队列为空时rear==front,队列有一个元素时
    rear==front,这是无法判断队列是空还是有一个元素,为了解决
    这个问题,我们在这里做了规定,俩个规定任选其一即可:
    1.让front作为队头元素前一个位置的下标,rear作为
    队尾元素的下标。
    2.让front作为队头元素下标,rear作为队尾元素后一个位置的
    下标
    
队列结构体:
struct queue
{
    int front;//标识队头前一个位置的下标
    int rear;//标识队尾元素的下标
    datatype * data;//指向队列空间首地址的指针
};


【链式队列】链式存储的队列,需要定义两个指针分别指向队列
的头节点和尾节点,头节点不存放数据,第一个有效节点为头节点
下一个节点

队列节点结构体的构建
struct node
{
    datatype data;//数据域
    struct node *next;//指针域
};

//构建指针结构体:
struct point
{
struct node *front;
struct node *rear;
};    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值