본문 바로가기

Data Structure

[자료구조] Stack

728x90

Swift에서 Stack을 구현하고 싶다면 배열을 사용해서 구현할 수 있다.

 

 

Stack이란?

c
b
a

위와 같은 스택 구조가 있다면 a -> b -> c 순으로 스택에 들어갔을 것이고 나올 때는 c -> b -> a 순서로 나오게 된다.

즉, 스택은 FILO 구조이다.

 

구조의 마지막에 추가/삭제 되기 때문에 시간 복잡도는 O(1)를 갖게 되며 그러므로 오버헤드는 발생하지 않는다.

 

Stack 구현

아래와 같이 구조체와 배열을 사용해서 스택을 구현할 수 있다.

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(3)
stack.push(2)
// 3, 2
stack.pop()
// 3

 

그러나, 위의 코드를 보면 알 수 있는 것처럼 스택의 경우 위의 구조체/배열을 통해서 사용할 수도 있지만, 배열을 스택처럼 사용해도 된다. 

즉, Swift에서는 굳이 Stack을 만들어서 사용하지 않아도 append() popLast() 메서드 등을 통해서 충분히 배열을 스택처럼 사용할 수 있다.

 

 

'Data Structure' 카테고리의 다른 글

[자료구조] 그래프  (0) 2022.09.28
[자료구조] Queue  (0) 2022.09.27
[자료구조] 연결 리스트 (양방향)  (0) 2022.09.26
[자료구조] 연결 리스트 (단방향)  (0) 2022.09.26
[자료구조] 배열  (1) 2022.09.26