Python数据结构之队列——使用数组实现队列
- 队列:一种受限制的线性表,ADT类型,仅支持队头删除数据和队尾添加数据。
- 具有先进先出,后进后出的特性。
- 适合领域:计算机模拟、CPU特性、外围设备的联机并发性质、树的广度优先搜索 (BFS)。
- 优点:只需要对 front(队首) 和 rear(队尾) 指针来进行操作数据。
- 缺点:数组队列容易产生假溢出现象。
- 假溢出: rear 指针添加数据时会超过数据大小范围,导致 rear 指向其他区域。
代码部分(5组)
- 创建队列
front = -1
rear = -1
array_size = 10
array = [None] * array_size
def create_queue():
global rear
name = ["小明", "小华", "小张", "小李", "小东"]
for i in range(5):
rear += 1
array[rear] = name[i]
- 添加数据
def add_data(name):
global rear
rear += 1
array[rear] = name
- 删除数据
def delete():
global front
front += 1
find_data = array[front]
array[front] = None
return find_data
- 判断是否为空队列
def empty():
if front == rear:
return True
else:
return False
总结:队列和栈和线性表都是顺序结构、可以使用链式存储和顺序存储;
# Use array make queue struct
front = -1
rear = -1
array_size = 10
array = [None] * array_size
def create_queue():
global rear
name = ["小明", "小华", "小张", "小李", "小东"]
for i in range(5):
rear += 1
array[rear] = name[i]
def add_data(name):
global rear
rear += 1
array[rear] = name
def delete():
global front
front += 1
find_data = array[front]
array[front] = None
return find_data
def empty():
if front == rear:
return True
else:
return False
if __name__ == '__main__':
create_queue()
print("数据中的数据为: ", array)
add_data("李子柒")
print("添加后数组中的数据为: ", array)
print("删除的数据: ", delete())
print("删除后数组中的数据为: ", array)
print("front", front, ", rear", rear)
for i in range(5):
delete()
if empty():
print("队伍已经为空!")
else:
print("队伍不为空!")
print(array)