队列
1、特点是先进先出(采用单链表存储方式)
2、操作
enqueue(data) 往队列中添加一个data数据
dequeue() 从队列头部删除一个数据
is_empty() 判断一个队列是否为空
size() 返回队列的大小
""" 采用列表方式存储 """
class Queue(object):
def __init__(self):
self.__list = [] # 创建一个空列表
def enqueue(self, data):
"""往队列中添加一个数据"""
self.__list.append(data) # 列表的尾部进行数据添加
def dequeue(self):
"""从队列头部删除一个数据"""
return self.__list.pop(0) # 列表的头部进行数据删除
""" 也可以从列表头部进行数据添加,列表尾部进行数据删除 添加:self.__list.insert(0, data) 删除:self.__list.pop() """
def is_empty(self):
"""判断一个队列是否为空"""
return not self.__list # 列表为空时返回True,否则返回False
def size(self):
"""返回队列的大小"""
return len(self.__list)
if __name__ == '__main__':
q = Queue()
q.enqueue("aaa")
q.enqueue("bbb")
q.enqueue("ccc")
print(q.size())
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
print(q.size())
执行结果
3
aaa
bbb
ccc
0
""" 采用单链表存储方式 """
import SingleLinkList
class Queue(object):
def __init__(self):
self.__sll = SingleLinkList() # 定义一个链表用于存放数据
def enqueue(self, data):
"""往队列中添加一个数据"""
self.__sll.append(data) # 链表的尾部进行数据添加
def dequeue(self):
"""从队列头部删除一个数据"""
data = self.__sll.index(0) # 先获取收节点的数据
if data:
self.__sll.remove(data) # 如果链表非空,则删除首节点
return data # 如果链表非空则返回的是首节点的数据,否则返回时None
def is_empty(self):
"""判断一个队列是否为空"""
return not self.__sll.is_empty() # False 不为空, True 空
def size(self):
"""返回队列的大小"""
return self.__sll.length() # 直接返回链表的长度
if __name__ == '__main__':
q = Queue()
q.enqueue("aaa")
q.enqueue("bbb")
q.enqueue("ccc")
print(q.size())
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
print(q.size())
执行结果
3
aaa
bbb
ccc
0