관리 메뉴

HAMA 블로그

[Swift 3.0] Queue 본문

아이폰 (IOS)

[Swift 3.0] Queue

[하마] 이승현 (wowlsh93@gmail.com) 2016. 11. 24. 21:00



import Foundation



public struct Queue<T> {

    

    private var list = LinkedList<T>()

    

    public var isEmpty: Bool {

        return list.isEmpty

    }

    

    

    // 뒤에 삽입하기  

    public mutating func enqueue(_ element: T) {

        list.append(value: element)

    }

    

    

    // 앞에서 가져오기 (가져오고 삭제)

    public mutating func dequeue() -> T? {

        guard !list.isEmpty, let element = list.first else { return nil }

        

        list.remove(node: element)

        

        return element.value

    }

    

    // 앞에서 가져오기 (가져오고 유지) 

    public func peek() -> T? {

        return list.first?.value

    }

}



extension Queue: CustomStringConvertible {

    

    public var description: String {

        

        return list.description

    }

}


Comments