数据结构组织计算机中的存储,以便我们可以轻松访问和更改数据。栈(Stack)和队列(Queue)是计算机科学中最早定义的数据结构。一个简单的 Python 列表既可以充当队列,也可以充当栈。队列遵循先进先出(FIFO)规则,并且在编程中用于排序。通常使用数组或链表来实现栈和队列。

栈(Stack)

栈是一种遵循后进先出(LIFO)原则的数据结构。要实现一个栈,我们需要两个简单的操作:

  • push(推入) - 将一个元素添加到栈的顶部。
  • pop(弹出) - 从栈的顶部移除一个元素。

1.pngtwo.png

操作:

  • 添加 - 将项目添加到栈中并增加栈的大小。添加发生在栈的顶部。
  • 删除 - 它有两种情况,首先,如果栈中没有元素,则栈会发生下溢,其次,如果栈包含一些元素,则会删除最顶部的元素。它会减小栈的大小。
  • 遍历 - 它涉及访问栈的每个元素。

特点:

  • 栈的插入顺序得到保留。
  • 对解析操作很有用。
  • 允许重复项。

代码示例

# Code to demonstrate Implementation of   
# stack using list   
x = ["Python", "C", "Android"]   
x.push("Java")   
x.push("C++")   
print(x)   
print(x.pop())   
print(x)   
print(x.pop())   
print(x)   

输出:

['Python', 'C', 'Android', 'Java', 'C++']
C++
['Python', 'C', 'Android', 'Java']
Java
['Python', 'C', 'Android']

队列(Queue)

队列遵循先进先出(FIFO)原则。它从两端打开,因此我们可以轻松地将元素添加到后面,并且可以从前面删除元素。

要实现一个队列,我们需要两个简单的操作:

  • enqueue(入队) - 将一个元素添加到队列的末尾。
  • dequeue(出队) - 从队列的开头移除一个元素。

2.png3.png

队列的操作

  • 添加 - 在队列中添加元素,发生在队列的末尾,即队列的后面。
  • 删除 - 它由两种情况组成 - 如果队列中没有元素,则队列会发生下溢,或者如果队列包含一些元素,则位于前端的元素会被删除。
  • 遍历 - 它涉及访问队列的每个元素。

特点:

  • 队列的插入顺序得到保留。
  • 允许重复项。
  • 对解析 CPU 任务操作很有用。

注意: 队列的实现有点不同。队列遵循“先进先出”的原则。时间在这里起着重要作用。栈很快,因为我们从列表的末尾插入和弹出元素,而在队列中,插入和弹出是从列表的开头进行的,因此速度较慢。这种时间差异的原因是列表的属性,它在末尾操作上很快,但在开头操作上较慢,因为所有其他元素都必须逐个移动。

代码示例

import queue   
# Queue is created as an object 'L'  
L = queue.Queue(maxsize=10)   
  
# Data is inserted in 'L' at the end using put()   
L.put(9)   
L.put(6)   
L.put(7)   
L.put(4)   
# get() takes data from   
# from the head    
# of the Queue   
print(L.get())   
print(L.get())   
print(L.get())   
print(L.get())   

输出:

9
6
7
4

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程