直播平台搭建,需要实现的核心要素之队列
直播平台搭建,需要实现的核心要素之队列
队列的实现
在直播平台搭建中,队列的实现分为队列的定义和操作,如前所述,队列是元素的有序集合,添加操作发生在其尾部,移除操作则发生在头部。队列的操作顺序是 先进先出(FIFO),它支持以下操作。
- Queue() :创建一个空队列。它不需要参数,且会返回一个空队列。
- enqueue( item ) :在队列的尾部添加一个元素。它需要一个元素作为参数,不返回任何值。
- dequeue() :从队列的头部移除一个元素。它不需要参数,且会返回一个元素,并修改队 列的内容。
- isEmpty() :检查队列是否为空。它不需要参数,且会返回一个布尔值。
- size() : 返回队列中元素的数目。它不需要参数,且会返回一个整数。
在直播平台搭建中创建一个新类来实现队列抽象数据类型是十分合理的。像之前一样,我们利用简洁强大的列 表来实现队列。 既然要创建队列,我们首先要确认队列的头尾,在这里我们假设队列的尾部在列表的位置 0 处。
首先我们对队列类进行定义,一个队列中最主要最核心的要素就是队列中的元素,而新生成一个队列时,这个队列中往往没有任何元素,因此我们对队列的初始化定义为:队列中的元素为空,即引用的列表为空列表。
代码如下:
class Queue: def __init__(self): self.items = []
当一个队列生成以后,最常见的计算队列长度的操作是必不可少的,因此只需要计算引入列表的长度即可。
代码如下:
def size(self): return len(self.items)
既然可以计算长度,那么我们也可以判断队列是否为空,通常我们只需判断引入的列表是否为空列表即可判断队列是否为空了。
代码如下:
def isEmpty(self): return self.items == []
接下来就是我们似曾相识,但是又用途非常广泛的两种操作了,插入和删除,我们在前面讲解栈的时候进行了出栈和入栈的操作,而在队列中也有类似的操作,即入队和出队,而队列和栈最大的不同便是,入队和出队并不是在同一个地方执行的。添加操作发生在“尾部”,移除操作则发生在“头部”。
我们在此设引入的列表的 0 号位为队列的尾部,传入要插入的元素 item ,默认将其插入到列表首位,即队列的入队操作,代码如下:
def enqueue(self, item): self.items.insert(0,item)
我们在此设引入的列表的表尾为队列的头部,要进行出队操作,只需删除列表的最后一个元素即可。代码如下:
def dequeue(self): return self.items.pop()
整体的代码如下:
class Queue: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def size(self): return len(self.items) def enqueue(self, item): self.items.insert(0,item) def dequeue(self): return self.items.pop()
以上就是直播平台搭建,需要实现的核心要素之队列, 更多内容欢迎关注之后的文章