ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자료구조] Swift로 풀어보는 큐(Queue)
    Programing/자료구조(Data structure) 2020. 6. 16. 21:23

    안녕하세요~! 5anniversary입니다.

     

    이번 시간에는 저번 포스팅에 이어 자료구조에서 대표적인 유형중에 하나인

     

    큐에 대해 천천히 알아보며, Swift로 구현해보는 시간을 가져보겠습니다.

     

     

    우선 큐에 대한 기본적인 구조를 알아야 큐를구현할수있겠죠??

     

    큐는 스택과 달리 선입선출 / FIFO(First in - First Out)으로 데이터에 접근하고,

     

    Back(Rear)이라는 위치에서 Enqueue라는 메소드로 데이터를 입력,

     

    Front라는 위치에서 Dequeue라는 메소드로 데이터를 출력, 삭제하는 구조로 구현되는 자료구조입니다.

     

     

    일반적으로 정의된 자료구조에 따라서 Swift로 코드를 작성해보자면!!

     

    public struct Queue<T> {
        
        private var storage: [T] = []
    
        // 비어있는 Queue로 생성
        public init() {}
        
        // Queue 생성과 함께 데이터 입력
        public init(_ elements: [T]){
            storage = elements
        }
        
        // Back에서 데이터 입력
        public mutating func enqueue(_ element: T) -> Bool {
            storage.append(element)
            return true
        }
        
        // Front에서 데이터 출력, 삭제 
        public mutating func dequque() -> T? {
            return isEmpty ? nil : storage.removeFirst()
        }
        
        public var isEmpty: Bool {
            return storage.isEmpty
        }
        
        public var peek: T? {
            return storage.first ?? T.self as! T
        }
    
        public var count: Int? {
            return storage.count
        }
    }
    

    와 같이 구현할수가 있습니다. 

     

    그리고 Stack과 같이

    extension Queue: CustomStringConvertible {
        public var description: String {
            return storage.description
        }
    }
    

    private로 선언된 storage를 그려줄수있는 desription을 작성해주었습니다.

     

     

    댓글

Designed by Tistory.