队列 数据类型及Python实现
队列 Queue
队列是种 从一端进入,从另一端排出 的数据类型。举个例子,像排队买票,后来的人总是排在最后,前面的人买完票就会离开队列。
所以 队列 Queue 中次序遵守 ‘先进先出’ 原则。与栈Stack结构不同。
队列 Queue的Python实现
Python内部没有队列类型,一般需要自己定义。习惯按照列表list定义队列类型:
class Queue:
def __init__(self):
self.items = [] #定义一个空队列
def isEmpty(self):
return self.items == [] #判断是否为空队列
def enqueue(self, item):
self.items.insert(0,item) #将数据项添加到队尾,无返回值
def dequeue(self):
return self.items.pop() #从队首移除数据项,返回移除的数据值
def size(self):
return len(self.items) #返回队列数据项的个数
注意enqueue 和 dequeue的实现方法:
上述 enqueue 用的insert(0),时间复杂度为O(n);dequeue 用的pop(),时间复杂度为O(1)
相对的,enqueue 可以用的append(),时间复杂度为O(1);dequeue 用的pop(0),时间复杂度为O(n)
举个操作的例子:
命令语句 | 队列里的内容 | 返回值 |
---|---|---|
q= Queue() | [] | |
q.isEmpty | [] | True |
q.enqueue(1) | [1] | |
q.enqueue(‘a’) | [ ‘a’,1] | |
q.isEmpty | [ ‘a’,1] | False |
q.size() | [ ‘a’,1] | 2 |
q.dequeue() | [‘a’] | 1 |
q.enqueue(‘b’) | [‘b’,‘a’] | |
q.size() | [‘b’,'a] | 2 |
学习陈斌老师的数据结构与算法Python版课有感