dev._.note

[Swift] Queue와 Stack 본문

Dev/SWIFT

[Swift] Queue와 Stack

Laena 2023. 11. 29. 13:14
큐와 스택은 데이터에 대한 개념이며 Swift에서는 따로 큐와 스택을 지원하지 않으면 Array 등을 이용해서 직접 구현할 수 있음.

📌 Queue

  • First-In-First-Out (FIFO)
  • 먼저 들어온 값을 먼저 내보내는 구조입니다.
  • ex ) 버블티 빨대
/*
<T> 에 대해서는 추후 배울 예정
제네릭이라는 것인데, 하나의 타입으로 국한되지 않고
타입에 유연하게 코드를 작성할 수 있는 기능입니다.
*/

struct Queue<T> {
    private var queue: [T] = []
    
    public var count: Int {
        return queue.count
    }
    
    public var isEmpty: Bool {
        return queue.isEmpty
    }
    
    public mutating func enqueue(_ element: T) {
        queue.append(element)
    }
    
    public mutating func dequeue() -> T? {
        return isEmpty ? nil : queue.removeFirst()
    }
}

var queue = Queue<Int>()
queue.enqueue(10)
queue.enqueue(20)
queue.dequeue() // 10

 

📌 stack

  • Last-In-First-Out (LIFO)
  • 먼저 들어온 값을 가장 마지막에 내보내는 구조.
  • ex ) 구덩이, iOS 개발시 Navigation
/*
<T> 에 대해서는 추후 배울 예정
제네릭이라는 것인데, 하나의 타입으로 국한되지 않고
타입에 유연하게 코드를 작성할 수 있는 기능입니다.
*/
struct Stack<T> {
    private var stack: [T] = []
    
    public var count: Int {
        return stack.count
    }
    
    public var isEmpty: Bool {
        return stack.isEmpty
    }
    
    public mutating func push(_ element: T) {
        stack.append(element)
    }
    
    public mutating func pop() -> T? {
        return isEmpty ? nil : stack.popLast()
    }
}

var stack = Stack<Int>()
stack.push(10)
stack.push(20)
stack.pop() // 20