-Python cola de lograr

En la cola de Python y cola de doble extremo directamente en el código de entender. Cola entiende muy bien, es simular a la vida alineamos. Avanzada, primero en salir cosa.

"""
队列 - ADT
队列 Queue 被构造为在队尾添加元素, 队首删除元素的有序集合, FIFO

Queue(): 创建一个空队列
enqueue(itme): 入队, 将元素添加到队尾
dequeue(): 出队, 删除队首元素并返回
is_empty(): 判断队列是否为空
sise(): 返回队列中的元素个数

思路:
    用 list 作为底层, 约定, 最左端为队尾, 最右端为队首

"""

class Queue:
    def __init__(self):
        self.items = []

    def enqueue(self, item):
        """添加元素到队尾"""
        self.items.insert(0, item)

    def dequeue(self):
        """删除队首元素并返回"""
        return self.items.pop()

    def is_empty(self):
        return self.items == []

    def size(self):
        return len(self.items)


if __name__ == '__main__':
    q = Queue()

    for i in range(1,6):
        q.enqueue(i)
    print(q.size())

    print(q.dequeue())
    print(q.dequeue())

    print(q.is_empty())

Dquue - deque

"""
Deque

双端队列被构造为项的集合, 可以从队首或队尾任意一段增删元素.

Deque(): 创建一个新的Deque

add_front(item): 从队首添加元素
add_rear(item): 从队尾添加元素

remove_front(item): 从队首删除元素, 并返回
remove_rear(item): 从队尾删除元素, 并返回

is_empty(): 判断队列是否空
size(): 返回队列中的项数

思路:
    用 list 作为底层架构, 并约定, 最左边为对尾, 最右侧为对首

"""


class Deque:
    def __init__(self):
        self.items = []

    def add_front(self, item):
        """队首添加元素"""
        self.items.append(item)

    def remove_front(self):
        """队首删除元素"""
        return self.items.pop()

    def add_rear(self, item):
        """队尾添加元素"""
        self.items.insert(0, item)

    def remove_rear(self):
        """删除队尾元素"""
        return self.items.pop(0)

    def is_empty(self):
        return self.items == []

    def size(self):
        return len(self.items)


if __name__ == '__main__':
    dq = Deque()

    for i in range(3):
        dq.add_front(i)
    print(dq.size())

    dq.add_rear(-1)
    print(dq.remove_front())

    print(dq.size())

Supongo que te gusta

Origin www.cnblogs.com/chenjieyouge/p/12459832.html
Recomendado
Clasificación