Stack
- LIFO(Last In First Out)
- Used
- Forward/back in browser
- Undo/Redo functionality
class Stack<T> {
private var array: [T] = []
func push(_ item: T) {
array.append(item)
}
func pop() -> T? {
array.popLast()
}
func peek() -> T? {
array.last
}
var isEmpty: Bool {
array.isEmpty
}
var count: Int {
array.count
}
}
struct StackStruct<T> {
fileprivate var array = [T]()
mutating func push(_ item: T) {
array.append(item)
}
mutating func pop() -> T? {
array.popLast()
}
var peek: T? {
array.last
}
var isEmpty: Bool {
array.isEmpty
}
var count: Int {
array.count
}
}
Queue
- FIFO(First In First Out)
- Used
- Printer queue
- Input streams
class Queue<T> {
private var array: [T] = []
func enqueue(_ item: T) {
array.append(item)
}
func dequeue() -> T? {
if isEmpty {
return nil
} else {
return array.removeFirst()
}
}
var isEmpty: Bool {
return array.isEmpty
}
var count: Int {
return array.count
}
func peek() -> T? {
return array.first
}
}
struct QueueStruct<T> {
private var array: [T] = []
mutating func enqueue(_ item: T) {
array.append(item)
}
mutating func dequeue() -> T? {
if isEmpty {
return nil
} else {
return array.removeFirst()
}
}
var isEmpty: Bool {
return array.isEmpty
}
var count: Int {
return array.count
}
func peek() -> T? {
return array.first
}
}