队列

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,总是在队列最后。这也比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然排在队伍最后。

队列模型.png

[图片上传中...(队列模型.png-a0eeb1-1534396263187-0)]队列的实现同栈一样,队列也可以用顺序表或者链表实现。操作Queue() 创建一个空的队列enqueue(item) 往队列中添加一个item元素dequeue() 从队列头部删除一个元素is_empty() 判断一个队列是否为空size() 返回队列的大小class Queue(object): """队列""" def __init__(self): self.__items = [] def is_empty(self): return self.__items == [] def enqueue(self, item): """进队列""" self.__items.insert(0,item) def dequeue(self): """出队列""" return self.__items.pop() def size(self): """返回大小""" return len(self.__items)if __name__ == "__main__": q = Queue() q.enqueue("hello") q.enqueue("world") q.enqueue("itcast") print (q.size()) print (q.dequeue()) print (q.dequeue()) print (q.dequeue())双端队列双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。操作Deque() 创建一个空的双端队列add_front(item) 从队头加入一个item元素add_rear(item) 从队尾加入一个item元素remove_front() 从队头删除一个item元素remove_rear() 从队尾删除一个item元素is_empty() 判断双端队列是否为空size() 返回队列的大小实现class Deque(object): """双端队列""" def __init__(self): self.items = [] def is_empty(self): """判断队列是否为空""" return self.items == [] def add_front(self, item): """在队头添加元素""" self.items.insert(0,item) def add_rear(self, item): """在队尾添加元素""" self.items.append(item) def remove_front(self): """从队头删除元素""" return self.items.pop(0) def remove_rear(self): """从队尾删除元素""" return self.items.pop() def size(self): """返回队列大小""" return len(self.items)if __name__ == "__main__": deque = Deque() deque.add_front(1) deque.add_front(2) deque.add_rear(3) deque.add_rear(4) print (deque.size()) print (deque.remove_front()) print (deque.remove_front()) print (deque.remove_rear()) print (deque.remove_rear())

(0)

相关推荐

  • 这8种数据结构,身为python开发的你必须得懂

    在解决现实世界的编码问题时,雇主和招聘人员都在寻找运行时和资源效率. 知道哪个数据结构最适合当前的解决方案将提高程序的性能,并减少开发所需的时间.出于这个原因,大多数顶级公司都要求对数据结构有很深的理 ...

  • 数据结构:队列与堆栈

    队列与堆栈都是一种数据的存储方式. 队列可以提供先进先出的顺序(FIFO).它每一次移除的元素,都是你最先放进去的元素.这里有一个非常类似的数据结构,堆栈Stack,属于后进先出的顺序(LIFO,La ...

  • 3W 字详解 Java 集合

    开源前哨 93篇原创内容 公众号 数据结构作为每一个开发者不可回避的问题,而 Java 对于不同的数据结构提供了非常成熟的实现,这一个又一个实现既是面试中的难点,也是工作中必不可少的工具,在此,笔者经 ...

  • C语言实现环形队列的原理和方法

    什么是环形队列? 环形缓冲区是一个非常典型的数据结构,这种数据结构符合生产者,消费者模型,可以理解它是一个水坑,生产者不断的往里面灌水,消费者就不断的从里面取出水. 那就可能会有人问,既然需要灌水,又 ...

  • 详解队列队形及口令

    队列队形练习的意义 队列是在一定队形下的协调而统一的行动.队形是为协同动作而采取的队伍排列形式.前者以人民解放军的"队列条令,为基础,并结合体育课的需要适当加以补充:后者是对体育课上经常采用 ...

  • 清朝老照片:巡抚大人出巡队列散乱,农民家庭房屋简陋破旧

    时间淘洗岁月,人们能够记住的往事百不及一.对历史研究者和爱好者而言,回头看.还原先辈的生活仍有意义.小编翻箱倒柜,找到一组珍贵的清朝末期老照片,拼凑出100多年前社会状况的片段,供感兴趣的朋友感怀过去 ...

  • 消息队列在RTOS的应用

    传说互联网应用有两大利器,一个是缓存,另一个就是消息队列. 一直相对消息队列做一下梳理,希望早日另有成文. 一叶知秋,实际上消息队列在嵌入式系统中同样有着广泛的应用. 近来致力于IoT和智能硬件,现学 ...

  • 6种延时队列的实现方案

    [编者的话]个人比较喜欢一些实践类的东西,既学习到知识又能让技术落地,能搞出个demo最好,本来不知道该分享什么主题,好在最近项目紧急招人中,而我有幸做了回面试官,就给大家整理分享一道面试题:&quo ...

  • Kafka 实现延迟队列、死信队列、重试队列

    Kafka中实现延迟队列 在发送延时消息的时候并不是先投递到要发送的真实主题(real_topic)中,而是先投递到一些 Kafka 内部的主题(delay_topic)中,这些内部主题对用户不可见, ...

  • 天境生物在研新药TJC4获CDE批准临床试验,在全球CD47抗体研发队列中脱颖而出

    9 月 21 日,天境生物(NASDAQ:IMAB)宣布,中国国家药品监督管理局(NMPA)药品审评中心(CDE)已批准其用于治疗复发或难治性晚期淋巴瘤患者的在研新药 Lemzoparlimab(TJ ...

  • 专做首板实战--快速设置复盘涨停队列

    快速设置复盘涨停队列 今天涨停,连续涨停天数=1日,剔除ST   (今日首板) 今天涨停,连续涨停天数=2日,剔除ST    (今日2连板1进2) 今天涨停,连续涨停天数=3日,剔除ST    (今日 ...

  • 手把手教姐姐写消息队列

    前言 这周姐姐入职了新公司,老板想探探他的底,看了一眼他的简历,呦呵,精通kafka,这小姑娘有两下子,既然这样,那你写一个消息队列吧.因为要用go语言写,这可给姐姐愁坏了.赶紧来求助我,我这么坚贞不 ...

  • Laravel 队列使用

    Laravel 队列使用