0%

Swift 创建栈(Stack)

Swift 创建栈(Stack)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/// 栈
// 用数组作为栈的线性表的实现
public struct Stack<T> {
// 数组
fileprivate var stackArray = [T]()

// count
public var count: Int {
return stackArray.count
}

// 是否为空
public var isEmpty: Bool {
return stackArray.isEmpty
}

// 顶部元素
public var top: T? {
guard !isEmpty else {
return nil
}
return stackArray.last
}

// push 操作
public mutating func push(_ element: T) {
stackArray.append(element)
}

// pop 操作
public mutating func pop() -> T? {
guard !isEmpty else {
print("stack is empty")
return nil
}
return stackArray.removeLast()
}

// 打印所有元素
public mutating func printAllElement() {
guard count > 0 else {
print("stack is empty")
return
}
print("\npint all stack elements")
for (index, value) in stackArray.enumerated() {
print("[\(index)]\(value)")
}
}
}

使用栈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var stack = Stack.init(stackArray: [])
stack.printAllElement()
stack.isEmpty

stack.push(22)
stack.printAllElement()

stack.push(33)
stack.printAllElement()

stack.top

stack.pop()
stack.printAllElement()

stack.pop()
stack.printAllElement()

stack.isEmpty