Swift数据结构:堆栈

堆栈是一个简单的数据结构,可让您创建项目的线性“堆栈”(因此得名)。 它是一种LIFO(“后进先出”)数据结构,这意味着添加到堆栈中的最后一个项目是可以删除的第一个项目。

它有一些非常实用的用例,如果您今天在计算机上做过任何事情,那么您已经与Stack进行了交互。 您将了解当前在何处使用Stack以及如何使用它。

对于您的视觉学习者,这是一个图表。 堆栈显示有6个项目。 如您所见,我为每个项目赋予了绿色索引。 尽管在与Stack本身进行交互时并不会真正使用它,但它使我们能够依赖于已内置的数据类型Array来帮助我们组织Stack。

堆栈中的值没有按照任何特定的方式进行组织,除了以下事实:添加新项目时,所有当前值都向下移动一个索引,然后将新的索引添加到堆栈的顶部,就像这样做一样与一叠饭菜。

堆栈具有3个可以与之交互的函数。 我们将在下面简要讨论每个对象及其作用:

函数1:peek()

我们的第一个函数称为peek() ,它使您可以做到这一点–窥视堆栈中最顶层的元素。 它将返回该项目在顶部以供使用或仅供参考。 它不会改变堆栈中的数据。

函数2:pop()

顾名思义, pop()从堆栈中返回顶层项目,然后将其删除。 如果要删除最上面的项目并允许撤消该操作,此功能特别有用。 由于返回并删除了最上面的项目,请设想我们有一个应用程序,可让您输入要完成的任务。 提交后,它将位于堆栈的顶部。 如果您犯了一个错误或输入了错误的内容,则可以通过调用pop()并继续进行操作来删除它,也可以修改刚刚输入的内容,因为会返回该值。 您可以使用返回的文本填充文本字段,对其进行修改,然后重新提交到堆栈。

函数3:push()

函数push()将允许我们向堆栈中添加值。 就那么简单。 由于新的值已添加到堆栈的顶部,因此它会更改堆栈中的值。

现在,您知道堆栈是什么以及它如何工作(理论上),让我们继续。

聊够了,让我们动手吧。 💪打开Xcode并创建一个新的Playground。 删除所有样板代码并import Foundation 。 然后,在该行下面创建Stack结构,并添加一个私有变量数组,称为String类型的items 。 将其值设置为空数组: