1 заметка с тегом
Структуры данных
Очередь
14 июня 2018, 19:06
protocol QueueProtocol { associatedtype Element mutating func append(element: Element) mutating func next() -> Element? }
Реализация очереди:
struct Queue<E>: QueueProtocol { typealias Element = E var elements: [E] = [] mutating func append(element: E) { elements.append(element) } mutating func next() -> E? { if elements.first == nil { return nil } return elements.removeFirst() } }
Пример применения очереди:
var queue = Queue<Int>() queue.append(element: 1) queue.append(element: 2) queue.append(element: 3) queue.append(element: 4) while let e = queue.next() { print("E -> \(e)") }