Stack
- 栈(Stack)是一种后入先出(Last in First Out)的数据结构,仅限定在栈顶进行插入或者删除操作。栈结构的实际应用主要有数制转换、括号匹配、表达式求值等等
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)
print:
8
2
Queue
- 队列在生活中很常见。排队等位置吃饭、排队买票、通过高速路口等,这些生活场景很好描述了队列的特点:先进先出 (FIFO,first in first out), 排在最前面的先出来,后面来的只能排在最后面
struct Queue<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 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)
print:
1
2