티스토리 뷰

반응형

안녕하세요 Pingu 입니다.🐧

 

Swift에는 Queue 자료구조가 따로 없어서 직접 만들어야합니다.😂

참고로 Queue는  FIFO(First In First Out)의 구조를 갖는 자료구조입니다.

 

매번 만드는게 귀찮아서 이렇게 따로 글을 남기려고합니다.

 

Queue를 만드는 방법에는 다양한 방법이 있지만 이번 글에서는 간단하게 배열 2개로 만든 Queue를 만들었어요.

Swift에서는 배열을 뒤집는 reversed() 메서드의 시간복잡도가 O(1) 이므로 Queue와 같은 성능을 낼 수 있다고 봅니다.

 

Queue의 가장 기본적인 기능들만 구현했습니다.

 

감사합니다.

// Mady By Pingu
class Queue<T: Equatable> {
    var enqueue: [T]
    var dequeue: [T] = []
    var count: Int {
        return enqueue.count + dequeue.count
    }
    var isEmpty: Bool {
        return enqueue.isEmpty && dequeue.isEmpty
    }
    var first: T? {
        if dequeue.isEmpty {
            return enqueue.first
        } else {
            return dequeue.last
        }
    }
    var last: T? {
        if enqueue.isEmpty {
            return dequeue.first
        } else {
            return enqueue.last
        }
    }
    init(_ queue: [T]) {
        enqueue = queue
    }
    func push(_ n: T) {
        enqueue.append(n)
    }
    func pop() -> T? {
        if dequeue.isEmpty {
            dequeue = enqueue.reversed()
            enqueue.removeAll()
        }
        return dequeue.popLast()
    }
    func removeAll() {
        enqueue.removeAll()
        dequeue.removeAll()
    }
    func contains(_ n: T) -> Bool {
        return enqueue.contains(n) || dequeue.contains(n)
    }
}
반응형

'Swift > Swift_DataStructure' 카테고리의 다른 글

[Swift] Heap(힙) 간단 구현  (0) 2021.03.16
[Swift] Deque(덱) 간단 구현  (1) 2021.03.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함