Python数据结构与算法学习(二)——基于数组的队列

基于数组的队列实现:

from _queue import Empty


class ArrayQueue:
    DEFAULT_CAPACITY = 10

    def __init__(self):
        self._data = [None] * ArrayQueue.DEFAULT_CAPACITY
        self._size = 0
        self._font = 0

    def __len__(self):
        return self._size

    def is_empty(self):
        return self._size == 0

    def first(self):
        if self.is_empty():
            raise Empty('Queue is empty.')
        return self._data[self._font]

    def enqueue(self, e):
        if self._size == len(self._data):
            self._resize(2 * len(self._data))
        avail = (self._font + self._size) % len(self._data)
        self._data[avail] = e
        self._size += 1

    def dequeue(self):
        if self.is_empty():
            raise Empty('Queue is empty.')
        answer = self._data[self._font]
        self._data[self._font] = None
        self._font = (self._font + 1) % len(self._data)
        self._size -= 1
        return answer

    def _resize(self, cap):
        old = self._data
        self._data = [None] * cap
        walk = self._font
        for k in range(self._size):
            self._data[k] == old[walk]
            walk = (1 + walk) % len(old)
        self._font = 0

 

posted @ 2021-10-14 21:39  烛丶火  阅读(78)  评论(0)    收藏  举报