Search
Duplicate

Swift Stack

Created
2023/12/13 11:52
Tags
Stack
태그

Swift에서의 Stack

제네릭으로 뼈대를 만들어준다.

struct Stack<T> { var elements: [T] = [] var count: Int { return elements.count } var isEmpty: Bool { return elements.isEmpty } }
Swift
복사
제네릭으로 데이터를 담을 수 있는 배열 하나를 만들어준다.
스택에 담긴 데이터의 개수와 스택이 비어있는지 여부는 스위프트에서 제공하는 count 연산 프로퍼티와 isEmpty 연산 프로퍼티를 그대로 사용

삽입(push) - O(1)

mutating func push(_ element: T) { elements.append(element) }
Swift
복사
여기서 mutating 키워드는 특정 struct, enum 또는 튜플 등의 값 타입의 메서드 내에서 해당 인스턴스의 속성을 변경할 때 사용된다. Swift에서는 값 타입의 인스턴스가 기본적으로 불변(immutable)이기 때문에, 이를 변경하는 메서드에는 mutating 키워드를 명시적으로 붙여야 한다. 여기서, push, pop 메서드는 해당 인스턴스의 상태를 변경하는 것으로 간주되어 mutating 키워드가 필요하다.

peek(top) - O(1)

func top() -> T? { return elements.last }
Swift
복사
배열의 last 프로퍼티를 통해 마지막 요소를 반환해준다.

삭제(pop) - O(1)

mutating func pop() -> T? { return elements.popLast() }
Swift
복사
→ 여기서 removeLast는 배열이 비어있을 때 사용하면 에러를 발생시킨다.
→ popLast를 사용하면 배열이 비어있을 때는 nil을 반환한다.