数据结构:线性数据结构(3)-deques(栈,队列,deques, 列表)

版权声明:作者:Rookiekk 联系邮箱:[email protected] 欢迎转载或分享,但请务必声明文章出处。 https://blog.csdn.net/qq_18888869/article/details/88137237

deque(也称为双端队列)是与队列类似的项的有序集合。即使 deque 可以拥有栈和队列的许多特性,它不需要由那些数据结构强制的 LIFO 和 FIFO 排序。这取决于你如何持续添加和删除操作。

1.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 中的项数。它不需要参数,并返回一个整数。

2.python实现Deque

#dequeue
class Dequeue(object):
    def __init__(self):
        self.items = list()
        
    def addFront(self, item):
        self.items.insert(0, item)
    
    def addRear(self, item):
        self.items.append(item)
    
    def removeFront(self):
        return self.items.pop(0)
    
    def removeRear(self):
        return self.items.pop()
    
    def isEmpty(self):
        return self.items == []
    
    def size(self):
        return len(self.items)

3.实例应用

回文检查:

#回文检查
def palchecker(aString):
    deque = Deque()
    
    for s in aString:
        deque.addRear(s)
    
    font = deque.removeFront()
    rear = deque.removeRear()
    flag = True
    while deque.size() > 1 and flag:
        font = deque.removeFront()
        rear = deque.removeRear()
        if font != rear:
            flag = False
            break
    return flag
print(palchecker("abjlksdj"))
print(palchecker("abccba"))

其他线性数据结构:

栈:https://mp.csdn.net/postedit/88086002

队列:https://blog.csdn.net/qq_18888869/article/details/88134592

列表(栈):https://blog.csdn.net/qq_18888869/article/details/88138785

github代码:https://github.com/makang101/python-data-structure

猜你喜欢

转载自blog.csdn.net/qq_18888869/article/details/88137237