개발하는 동글 :]

[자료구조] Stack and Queue Swift로 Stack, Queue 구현 해보기 본문

카테고리 없음

[자료구조] Stack and Queue Swift로 Stack, Queue 구현 해보기

동글하다 2024. 1. 1. 12:41

Stack [스택]

Stack은 가장 마지막으로 들어간 데이터가 가장 첫 번째로 나오는 성질 LIFO, Last In First Out 을 가진 자료 구조

스택 접근 탐색 삽입 삭제

평균 O(n) O(n) O(1) O(1)
  • 재귀적인 함수, 알고리즘에 사용되며 웹 브라우저 방문 기록 등에 사용
  • 삽입 : Push
  • 삭제 : Pop


Queue [큐]

Queue는 먼저 집어넣은 데이터가 먼저 나오는 성질 FIFO, First In First Out을 지닌 자료 구조

큐 접근 탐색 삽입 삭제

평균 O(n) O(n) O(1) O(1)
  • 삽입 : Enqueue
  • 삭제 : Dequeue 


Swift로 Stack과 Queue를 구현해 보기

struct Stack<T> {
    private var elements: [T] = []
    
    mutating func push(newElement: T) {
        elements.append(newElement)
    }
    
    mutating func pop() -> T? {
        return elements.popLast()
    }
}

struct Queue<T> {
    private var elements: [T] = []
    
    mutating func enqueue(newElement: T) {
        elements.append(newElement)
    }
    mutating func dequeue() -> T?{
        return elements.removeFirst()
    }
}

var stack: Stack<Int> = .init()
stack.push(newElement: 1)
stack.push(newElement: 2)
stack.push(newElement: 3)
stack.pop()//3
stack.pop()//2
stack.pop()//1

var queue: Queue<String> = .init()
queue.enqueue(newElement: "say hi")
queue.enqueue(newElement: "say bye")
queue.dequeue()//"say hi"
queue.dequeue()//"say bye"