美文网首页数据结构和算法分析
【数据结构与算法】队列

【数据结构与算法】队列

作者: Lee_DH | 来源:发表于2020-02-08 21:03 被阅读0次

一、是什么

一种先进先出线性表数据结构,只支持入队和出队操作

二、使用场景

  • MySQL连接池
  • Redis单线程特性
  • 分布式消息队列

三、工作原理

队尾插入元素,队头删除元素

四、队列类型

  • 顺序队列:
    数组实现的就是顺序队列(有数据搬移操作)
  • 循环队列:
    将数组的首尾相连,形成一个环(没有数据搬移操作)
  • 阻塞队列:
    当队列为空时,从队头取数据会被阻塞;当队列已满时,插入数据的操作将被阻塞,形成一个生产者-消费者模型
  • 并发队列:
    在多线程情况下, 会有多个线程同时操作队列,此时如果是线程安全的队列我们就叫作并发队列。一般使用CAS(类似乐观锁)和锁来实现并发队列。

四、实现

  • 代码实现
type list []int

func NewList() *list {
    newList := make(list, 0)
    return &newList
}

func listPush(newList *list, a ...int) {
    *newList = append(*newList, a...)
}

func listPop(newList *list) (listObj int) {
    length := len(*newList)
    if length <= 0 {
        return
    }
    listObj = (*newList)[0]
    *newList = (*newList)[1:length]
    return
}
  • Redis实现

rpush + lpop = list(队列)

五、优劣

  • 优点:
  1. 不涉及到数组搬移时,出队和入队的时间复杂度都为 O(1)
  2. 操作受限,使用比较可控,不容易出错(和数组、链表相比较
  • 缺点:
  1. 在内存中,队列结构里的数据大小和生命周期是固定的,缺乏灵活性

六、替代性技术

  • 数组
  • 链表

相关文章

  • 数据结构与算法 (队列实现篇)

    数据结构与算法 (队列实现篇) 在数据结构与算法中,队列(queue)是一种受限的线性储存结构,特殊之处在于它只允...

  • 排序算法

    什么是算法 书籍推荐 《数据结构与算法分析》 表、栈和队列 树 散列(hash) 优先队列(堆) 排序 定义 问题...

  • 集合相关数据结构与算法

    队列 栈数据结构 比较算法 Collections Collection与Collections的区别?Colle...

  • 数据结构与算法学习开篇

    数据结构与算法知识图谱 20个最常用的、最基础数据结构与算法 10个数据结构:数组、链表、栈、队列、散列表、二叉树...

  • 【数据结构与算法 - Swift实现】10 - 优先队列 (Pr

    在【数据结构与算法 - Swift实现】04 - 队列 (Queue)文章里面,我们已经讲过队列,采用先进先出的规...

  • 数据结构与算法分析:大纲]

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 本系列课程主要...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • 链式队列的定义,ios基础知识篇!

    数据结构与算法-链式队列 链式队列的定义 链式队列是用链表来实现的队列,不存在队满的情况。链式队列也包里队列的特点...

  • 数据结构与算法之美-09讲队列

    数据结构与算法之美-09讲队列 特别备注 本系列非原创,文章原文摘自极客时间-数据结构算法之美[https://t...

  • 队列

    数据结构与算法 --- 队列 【转载】 原文:https://www.jianshu.com/p/c8f2524e...

网友评论

    本文标题:【数据结构与算法】队列

    本文链接:https://www.haomeiwen.com/subject/frlwxhtx.html