- 栈和队列都是(临时性的)保存数据元素的容器
- 栈是保证缓冲元素后进先出
- 队列是保证缓冲元素的先进先出
- 队列的实现
class SQueue(): # 队列的list实现
def __init__(self, init_len=8): # 队列的初始长度为8
self.len = init_len # 设置初始长度为8
self.elems = [0] # 队列的项
self.head = 0 # 记录队头指针的位置
self.elnum = 0 # 记录对中元素的个数
def is_empty(self): # 队列的判空
return self.elnum == 0
def first(self): # 取当前元素的值(并不删除)
if self.elnum == 0:
raise QueueUnderflow
return self.elems[self.head]
def dequeue(self): # 从队列里删除一个元素(出队)
if self.elnum == 0:
raise SQueueUnderfloe
e = self.elems[self.head]
self.head = (self.head+1) % self.len
self.elnum -= 1
return e
def enqueue(self, elem): # 将一个元素放入队列(入队)
if self.elnum == self.len:
self.__extend()
self.elems[(self.head+self.elnum) % self.len] = elem
self.elnum += 1
def __extend(self):
old_len = self.len
self.len *= 2
new_elems = [0] * (self.len)
for i in range(old_len):
new_elems[i] = self.elems[(self.head+i) % old_len]
self.elems,self.head = new_elems, 0