数据结构之队列(Python 版)
队列的特点:先进先出(FIFO)
- 使用链表技术实现
使用单链表技术,在表首尾两端分别加入指针,就很容易实现队列类。
- 使用顺序表list实现
1 # 队列类的实现 2 3 class SQueue() : 4 5 def __init__(slef,init_len = 8) : 6 self._len = init_len # 存储区长度 7 self._elems = [0] * init_le # 元素存储 8 self._head = 0 # 表头元素下标 9 self._num = 0 # 元素个数 10 11 def is_empty(self) : 12 return self._num == 0 13 14 def peek(self) : # 查看首元素 15 if self._num == 0 : 16 raise QueueUnderflow 17 return self._elems[self._head] 18 19 def dequeue(self) : # 出队 20 if self._num == 0 : 21 raise QueueUnderflow 22 e = self._elems[self._head] 23 self._head = (self._head + 1) % self._len 24 self._num -= 1 25 return e 26 27 def enquene(self,e) : # 入队 28 if self._num == self._len : 29 self.__extend() 30 slef._elems[(self._head + self._num) % self._len] = e 31 self._num += 1 32 33 def __extenc() : # 扩充元素表 个数*2 34 old_len = self._len 35 self._len *= 2 36 new_elems = [0] * self._len 37 for i in range[old_len] : 38 new_elems[i] = self._elems[(self._head + i) % old_len] 39 self._elems ,self._head = new_elems , 0