본문 바로가기

iOS 앱 개발자 프로젝트/Swift 문법 정복하기

[Swift] queue & stack

2024년 3월 10일 일요일

 

  • swift 기본 개념 중, queued와 stack에 대해 명확하게 이해하는 것이 오늘의 목표!
  • data에 대한 개념으로 array 등을 이용하여 직접 구현할 수 있도록 한다.

 

1. 큐

2. 스택


 

1. 큐 (Queue)

 

  • First-In-First-Out (FIFO)
  • 먼저 들어온 값을 먼저 내보내는 구조

 

※ 예 : 버블티 빨대

/*
<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

 

 

 

2. 스택 (Stack)

 

  • Last-In-First-Out (LIFO)
  • 먼저 들어온 값을 가장 마지막에 내보내는 구조

 

※ 예 : 구덩이, iOS 개발 시 Navigation

 

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