原文链接:
https://www.cnblogs.com/bobo-zhang/p/10525482.html
</h1>
<div class="clear"></div>
<div class="postBody">
一.双端队列(Deque)
- 概念:deque(也称为双端队列)是与队列类似的项的有序集合。它有两个端部,首部和尾部,并且项在集合中保持不变。
- 特性:deque 特殊之处在于添加和删除项是非限制性的。可以在前面或后面添加新项。同样,可以从任一端移除现有项。在某种意义上,这种混合线性结构提供了单个数据结构中的栈和队列的所有能力。
- 注意:即使 deque 可以拥有栈和队列的许多特性,它不需要由那些数据结构强制的 LIFO 和 FIFO 排序。这取决于你如何持续添加和删除操作。
二.Python实现Deque
- Deque的抽象数据类型定义:Deque的抽象数据类型应该由以下结构和操作定义。其中元素可以从首部或尾部的任一端添加和移除。Deque操作如下:
-
- Deque() 创建一个空的新 deque。它不需要参数,并返回空的 deque。
- addFront(item) 将一个新项添加到 deque 的首部。它需要 item 参数 并不返回任何内容。
- addRear(item) 将一个新项添加到 deque 的尾部。它需要 item 参数并不返回任何内容。
- removeFront() 从 deque 中删除首项。它不需要参数并返回 item。deque 被修改。
- removeRear() 从 deque 中删除尾项。它不需要参数并返回 item。deque 被修改。
- isEmpty() 测试 deque 是否为空。它不需要参数,并返回布尔值。
- size() 返回 deque 中的项数。它不需要参数,并返回一个整数。
class Deque: def __init__(self): self.items = []</span><span style="color: #0000ff;">def</span><span style="color: #000000;"> isEmpty(self): </span><span style="color: #0000ff;">return</span> self.items ==<span style="color: #000000;"> [] </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> addFront(self, item): self.items.append(item) </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> addRear(self, item): self.items.insert(0,item) </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> removeFront(self): </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> self.items.pop() </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> removeRear(self): </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> self.items.pop(0) </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> size(self): </span><span style="color: #0000ff;">return</span> len(self.items)</pre>
分类:
数据结构+算法
<div id="blog_post_info">
0
0
<div class="clear"></div>
<div id="post_next_prev">
<a href="https://www.cnblogs.com/bobo-zhang/p/10525106.html" class="p_n_p_prefix">« </a> 上一篇: <a href="https://www.cnblogs.com/bobo-zhang/p/10525106.html" title="发布于 2019-03-13 18:43">5.队列的应用案例-烫手的山芋</a>
<br>
<a href="https://www.cnblogs.com/bobo-zhang/p/10525545.html" class="p_n_p_prefix">» </a> 下一篇: <a href="https://www.cnblogs.com/bobo-zhang/p/10525545.html" title="发布于 2019-03-13 19:26">7.Deque的应用案例-回文检查</a>
</div><!--end: topics 文章、评论容器-->
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】精品问答:微服务架构 Spring 核心知识 50 问