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

Lin*_*Han 4 python algorithm buffer deque data-structures

对于我缺乏数据结构教育,我提前表示歉意。

据我了解:

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

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

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

tem*_*def 7

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

区别在于,其中之一是抽象,而其中之一是实现该抽象的具体方法。有多种方法可以实现队列,包括带有尾指针的链表、循环缓冲区,甚至是展开树。类似地,您可以对带有尾指针的链表执行一些您不会对双端队列执行的操作,例如将大部分拼接到列表中或从列表中拼接出来。

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

希望这可以帮助!