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

浙公网安备 33010602011771号