在Python中使用列表作为栈和队列
在本文中,我们将学习Python 3.x(或更早版本)中的栈和队列结构。我们将讨论这些数据结构的工作原理和修改。
这包括:
- 插入操作(入栈,入队)
- 删除操作(出栈,出队)
- 显示/遍历操作
先决条件:列表和列表操作
相关数据结构:列表操作
相关图片

栈
在栈中,对象一个接一个地存储,这些对象以与到达顺序相反的顺序移除,即遵循后进先出(LIFO)的概念。LIFO 表示栈数据结构中遵循后进先出的排列方式。
栈的操作:
- 添加/追加元素:这会将栈的大小增加添加的元素数量,添加发生在上端,即栈的顶部。
- 删除/移除元素:这涉及两个条件:如果栈为空,则没有元素可供删除,即栈中发生下溢;或者如果栈中存在某些元素,则顶部存在的元素将被移除。这会将栈的大小减少移除的元素数量。
- 遍历/显示:这涉及访问栈的每个元素并在屏幕上显示。
我们还可以插入一个额外的 peek 功能,即检索栈顶部的值。
栈的特征
- 插入顺序得以保留。
- 栈允许重复元素。
- 存储类似的数据类型。
- 在解析操作中非常有用。
示例代码
def isEmpty(stk): # checks whether the stack is empty or not
if stk==[]:
return True
else:
return False
def Push(stk,item): # Allow additions to the stack
stk.append(item)
top=len(stk)-1
def Pop(stk):
if isEmpty(stk): # verifies whether the stack is empty or not
print("Underflow")
else: # Allow deletions from the stack
item=stk.pop()
if len(stk)==0:
top=None
else:
top=len(stk)
print("Popped item is "+str(item))
def Display(stk):
if isEmpty(stk):
print("Stack is empty")
else:
top=len(stk)-1
print("Elements in the stack are: ")
for i in range(top,-1,-1):
print (str(stk[i]))
# executable code
if __name__ == "__main__":
stk=[]
top=None
Push(stk,1)
Push(stk,2)
Push(stk,3)
Push(stk,4)
Pop(stk)
Display(stk)以上代码实现了 Python 3.x(或更早版本)中的栈功能。我们可以通过使用多个 if-else 语句为用户提供选择来创建一个菜单驱动的程序。在这两种情况下,栈的构建概念保持不变。
下面显示的屏幕描绘了上述程序产生的输出。我们还可以使用 input() 函数来实现基于用户的输入系统(这里我实现了静态输入)。
输出
Popped item is 4 Elements in the stack are: 3 2 1
队列
在栈中,对象一个接一个地存储,这些对象以与到达顺序相同的顺序移除,即遵循先进先出(FIFO)的概念。FIFO 表示队列数据结构中遵循先进先出的排列方式。
队列的操作
添加/追加元素:这会将队列的大小增加添加的元素数量,添加发生在后端,即队列的末尾。
删除/移除元素:这涉及两个条件:如果队列为空,则没有元素可供删除,即队列中发生下溢;或者如果队列中存在某些元素,则最前面的元素将被移除。这会将栈的大小减少移除的元素数量。
遍历/显示:这涉及访问栈的每个元素并在屏幕上显示。
我们还可以插入一个额外的 peek 功能,即检索队列末尾/后端的值。
队列的特征
- 插入顺序得以保留。
- 队列允许重复元素。
- 存储类似的数据类型。
- 在解析 CPU 任务操作中非常有用。
示例代码
#Adding elements to queue at the rear end
def enqueue(data):
queue.insert(0,data)
#Removing the front element from the queue
def dequeue():
if len(queue)>0:
return queue.pop()
return ("Queue Empty!")
#To display the elements of the queue
def display():
print("Elements on queue are:");
for i in range(len(queue)):
print(queue[i])
# executable code
if __name__=="__main__":
queue=[]
enqueue(5)
enqueue(6)
enqueue(9)
enqueue(5)
enqueue(3)
print("Popped Element is: "+str(dequeue()))
display()以上代码实现了 Python 3.x(或更早版本)中的队列功能。我们可以通过使用多个 if-else 语句为用户提供选择来创建一个菜单驱动的程序。在这两种情况下,队列的构建概念保持不变。
下面显示的屏幕描绘了上述程序产生的输出。我们还可以使用 input() 函数来实现基于用户的输入系统(这里我实现了静态输入)。
输出
Popped item is: 5 Elements on queue are: 3 5 9 6
结论
在本文中,我们学习了如何在 Python 3.x(或更早版本)中实现栈和队列数据结构。您可以使用相同的算法在任何其他编程语言中实现栈/队列检测器程序。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP