Swift 语言 栈数据结构的基本操作

Swift阿木 发布于 2025-05-29 12 次阅读


Swift 语言中栈数据结构的基本操作实现

栈(Stack)是一种先进后出(Last In First Out, LIFO)的数据结构,它遵循“后进先出”的原则。在编程中,栈常用于处理函数调用、表达式求值、递归算法等问题。本文将围绕Swift语言,详细介绍栈数据结构的基本操作,包括栈的创建、入栈、出栈、查看栈顶元素以及栈的空和满状态判断。

1. 栈的创建

在Swift中,我们可以使用数组(Array)来实现栈。以下是创建一个栈的示例代码:

swift
struct Stack {
private var elements = [T]()

// 栈的容量
private let capacity: Int

init(capacity: Int) {
self.capacity = capacity
}

// 栈的元素数量
var count: Int {
return elements.count
}

// 栈是否为空
var isEmpty: Bool {
return elements.isEmpty
}

// 栈是否已满
var isFull: Bool {
return elements.count == capacity
}
}

在这个例子中,我们定义了一个泛型栈`Stack`,它接受一个类型参数`T`和一个容量参数`capacity`。栈的元素存储在`elements`数组中。

2. 入栈(Push)

入栈操作是将一个元素添加到栈顶。以下是实现入栈操作的代码:

swift
mutating func push(_ element: T) {
guard !isFull else {
print("Stack is full. Cannot push element.")
return
}
elements.append(element)
}

在`push`方法中,我们首先检查栈是否已满。如果栈未满,则将元素添加到`elements`数组的末尾。

3. 出栈(Pop)

出栈操作是从栈顶移除一个元素。以下是实现出栈操作的代码:

swift
mutating func pop() -> T? {
guard !isEmpty else {
print("Stack is empty. Cannot pop element.")
return nil
}
return elements.removeLast()
}

在`pop`方法中,我们首先检查栈是否为空。如果栈不为空,则从`elements`数组的末尾移除元素并返回它。

4. 查看栈顶元素(Top)

查看栈顶元素但不移除它,可以使用以下代码:

swift
func top() -> T? {
return elements.last
}

`top`方法返回`elements`数组的最后一个元素,即栈顶元素。

5. 栈的空和满状态判断

在`Stack`结构体中,我们已经提供了`isEmpty`和`isFull`属性来判断栈的空和满状态。以下是这两个属性的代码实现:

swift
var isEmpty: Bool {
return elements.isEmpty
}

var isFull: Bool {
return elements.count == capacity
}

这两个属性分别返回`elements`数组是否为空以及数组长度是否等于栈的容量。

6. 完整的栈实现

以下是完整的栈实现代码:

swift
struct Stack {
private var elements = [T]()
private let capacity: Int

init(capacity: Int) {
self.capacity = capacity
}

var count: Int {
return elements.count
}

var isEmpty: Bool {
return elements.isEmpty
}

var isFull: Bool {
return elements.count == capacity
}

mutating func push(_ element: T) {
guard !isFull else {
print("Stack is full. Cannot push element.")
return
}
elements.append(element)
}

mutating func pop() -> T? {
guard !isEmpty else {
print("Stack is empty. Cannot pop element.")
return nil
}
return elements.removeLast()
}

func top() -> T? {
return elements.last
}
}

7. 总结

本文介绍了Swift语言中栈数据结构的基本操作,包括栈的创建、入栈、出栈、查看栈顶元素以及栈的空和满状态判断。通过使用数组来实现栈,我们可以方便地在Swift中处理各种需要栈数据结构的场景。在实际应用中,可以根据具体需求调整栈的容量和类型,以适应不同的编程场景。