python - 双端队列和循环缓冲区有什么区别?

标签 python algorithm data-structures buffer deque

我为我缺乏数据结构教育提前道歉。

据我了解:

  • 用作内存的固定大小的双端队列可以替换其最旧的值(尽管我们会删除新值)

  • 用作内存的循环缓冲区也可以替换其最旧的值

这两个概念有什么区别?它们是一样的吗?一个是另一个的子集吗?

最佳答案

一个很好的相关问题是:队列和带尾指针的链表有什么区别?队列添加到末尾并从前面删除,这与您可以对带有尾指针的链表执行的操作相同。

不同之处在于,其中一个是抽象,而其中一个是实现该抽象的具体方法。有几种方法可以实现队列,包括带有尾指针的链表、循环缓冲区,甚至是拉伸(stretch)树。类似地,对于带有尾指针的链表,您可以做一些您不会对双端队列做的事情,例如将大的部分拼接到列表中或从列表中拼接出来。

在您的例子中,“双端队列”是抽象。您可以将双端队列视为“可以从两端添加和删除的东西”,它可以用循环缓冲区、链表或伸展树(Splay Tree)等来实现。循环缓冲区是多种方式之一您可以实现双端队列,除了实现双端队列之外,您还可以使用循环缓冲区执行其他操作。

希望这对您有所帮助!

关于python - 双端队列和循环缓冲区有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60643379/

相关文章:

c - C 中结构体数组的数组 - 声明

python - 如何使我的类中的变量成为全局变量,但仅使其在类中成为全局变量?

c - C 中 n 数组的交集算法

java - 二维数组的快速散列

algorithm - 跳跃列表的合并

c - 我需要帮助在 C 中从中缀转换为后缀

c - 打印链表数据时只打印第一个元素

python - 在 Ubuntu 上使用 python 打开磁力链接

python - 如何使用 Django ORM 进行查询,以便根据特定组中的日期时间字段返回最新条目?

python - 如何使用类别列和值列转换 pandas 中的数据框