Stack
- 栈是一种后入先出的数据结构,仅限定在栈顶进行插入和删除操作。栈结构的实际应用主要有数制转换、括号匹配、表达式求值等。

struct Stack<T> {
private var elements = [T]()
var count:Int {
return elements.count
}
var isEmpty:Bool {
return elements.isEmpty
}
var peek:T? {
return elements.last
}
mutating func push(_ element:T) {
elements.append(element)
}
mutating func pop() -> T? {
return elements.popLast()
}
}
var stack = Stack<Int>()
stack.push(1)
stack.push(3)
stack.push(8)
print(stack.pop() ?? 0)
print(stack.count)
执行结果如下:
8
2
popLast() 可以作用在空数组上,当数组为空时,返回 nil
Queue
- 队列在生活中非常常见,先进先出。

struct Queue<T> {
private var elements:[T] = []
var count:Int {
return elements.count
}
var isEmpty:Bool {
return elements.isEmpty
}
var peek:T? {
return elements.first
}
mutating func enqueue(_ element:T) {
elements.append(element)
}
mutating func dequeue() -> T? {
return isEmpty ? nil : elements.removeFirst()
}
}
var queue = Queue<Int>()
queue.enqueue(1)
queue.enqueue(3)
queue.enqueue(8)
print(queue.dequeue() ?? 0)
print(queue.count)
执行结果如下:
1
2
removeFirst() 不可以作用在空数组上,当数组为空时,会crash
网友评论