由于队列的动态由队头指针与队尾指针共同反映,所以我们在实现先入后出的同时还要实现队头元素与队尾元素的访问。对于普通的队列,我们使用列表实现其顺序存储,使用其它方法实现其链式存储。
顺序存储
由于我们使用list作为queue的底层、用Queue类对list进行了简单封装,所以在顺序存储结构中我们可以方便的利用列表的方法。具体代码:
class Queue(object):
'定义队列。'
def __init__(self):
'初始化一个空列表。'
self.items = []
def IsEmpty(self):
'方法:判断队列是否为空。'
return self.items == []
def get_size(self):
'方法:求队列长度。'
return len(self.items)
def get_TopValue(self):
'方法:访问队头元素。'
if self.IsEmpty():
return None
else:
return self.items[0]
def get_BottomValue(self):
'方法:访问队尾元素。'
if self.IsEmpty():
return None
else:
return self.items[-1]
def push(self,data):
'方法:进队。'
self.items.append(data)
def pop(self):
'方法:出队。'
if self.IsEmpty():
raise IndexError('队列为空。')
else:
self.items.pop(0)
简单测试:
my_queue = Queue()
print('Is my queue empty?\n{}'.format(my_queue.IsEmpty()))
[my_queue