Lin*_*Han 4 python algorithm buffer deque data-structures
对于我缺乏数据结构教育,我提前表示歉意。
据我了解:
用作内存的固定大小的双端队列可以替换其最旧的值(尽管我们删除新值)
用作内存的循环缓冲区也可以替换其最旧的值
这两个概念有什么区别?它们是一样的吗?一个是另一个的子集吗?
一个很好的相关问题是:队列和带有尾指针的链表有什么区别?队列添加到末尾并从前面删除,这与使用尾指针的链表执行的操作相同。
区别在于,其中之一是抽象,而其中之一是实现该抽象的具体方法。有多种方法可以实现队列,包括带有尾指针的链表、循环缓冲区,甚至是展开树。类似地,您可以对带有尾指针的链表执行一些您不会对双端队列执行的操作,例如将大部分拼接到列表中或从列表中拼接出来。
在你的例子中,“deque”是抽象。您可以将双端队列视为“可以从两端添加和删除的东西”,它可以使用循环缓冲区、链表或展开树等来实现。循环缓冲区是多种方法之一您可以实现双端队列,并且除了实现双端队列之外,您还可以使用循环缓冲区执行其他操作。
希望这可以帮助!