• 【数据结构】队列


      如何理解队列,我们可以想象成排队,先进先出。与栈相比的是,栈只支持俩个基本操作: 入栈 push() 和出栈 pop() 。队列和栈很相似,最基本的操作也是俩个: 入队 enqueue() ,将一个数据放在队列尾部; 出队dequeue() ,从队列头部取一个元素。所以,队列和栈一样,也是一中操作受限的线性表数据结构。


    顺序队列华为链式队列:

      和栈一样,队列可以用数组来实现,也可以用链表来实现。用数组实现的队列叫做顺序队列,用链表实现的队列叫做链式队列。


    顺序队列的数据搬移:

      在有限的的空间情况下,随着不停地入队、出队操作, head 和 tail 都会持续向后移动。当 tail 移动到最右边,即使数组中还有空闲空间,也无法继续往队列中添加数据了。此时可以使用数据搬移操作,即在出队的时候不进行数据搬移,如果没有空闲空间了,我们在入队的时候集中出发一次数据搬移的操作。


    循环队列:

      队空的判断条件为: head  == tail,队满的条件: (tail+1)%n = head。


    阻塞队列和并发队列:

      阻塞队列其实是在队列的基础上增加了阻塞操作。简单来说,就是队列为空的时候,从队头读取数据会被阻塞,而队列满了以后,插入数据操作就会被阻塞。这其实就是一个生产者-消费者模型。

  • 相关阅读:
    OVS local network 连通性分析
    再部署一个 instance 和 Local Network
    ARM Linux系统调用的原理
    Linux内存管理中的slab分配器
    浅析基于ARM的Linux下的系统调用的实现
    分享一个查看十六进制的位的小程序
    mokoid 源代码下载
    shell中eval的使用问题
    批量去掉文件中的^M
    基于TINY4412的Andorid开发-------简单的LED灯控制
  • 原文地址:https://www.cnblogs.com/guangluwutu/p/11789614.html
Copyright © 2020-2023  润新知