加入 Swift Algorithm Club /‘ælgə’rɪðəm/,回炉重新学习数据结构与算法。
自己创建的项目:GitHub - imzyf/data-structure-and-algorithm。
实现一个 栈
/stæk/,包含 push
peek
pop
与 Generics
泛型。
stack
栈
非常像一个数组,它包括少量的方法。
- push 添加一个新元素到栈顶
- pop 从栈顶移除一个元素
- peek 查看栈顶的一个元素但是不 pop
A stack gives you a LIFO or last-in first-out order. 栈是后进先出,队列是先进先出。
public struct Stack<Element> { |
push
push
是在数组的尾部添加元素是以 O(1)
,如果是在数组最前添加是 O(n)
这是昂贵的。
public mutating func push(_ element: Element) { |
因为使用的 struct
,修改属性值的方法要加 mutating
。
pop
想从一个空栈中弹出最后一个元素将返回 nil
。
public mutating func pop(_ element: Element) { |
peek
与 pop
有点像,但是并没有移除栈顶的元素。
/// peek 改为更加语义化的 top 只读变量 |
other
两个其他的常用属性,栈是否为空,栈中元素的个数。
public var isEmpty: Bool { |
References
– EOF –