Git Hub
коротко

Очередь

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)")
}
Поделиться
Популярное