-
[자료구조] Swift로 풀어보는 스택(Stack)Programing/자료구조(Data structure) 2020. 6. 16. 00:33
안녕하세요~! 5anniversary입니다.
이번 시간에는 자료구조에서 대표적인 유형 중에 하나인 스택에 대해 천천히 알아보며, Swift로 구현해보는 시간을 가져보겠습니다.
우선 스택에 대한 기본적인 구조를 알아야 스택을 구현할 수 있겠죠??
스택은 후입 선출/LIFO(Last In - First Out)으로 데이터에 접근하는 자료구조입니다.
따라서 일반적으로 TOP이라 부르는 위치에서만 데이터를 입력, 출력, 삭제를 할 수 있는 구조로 구현되어있습니다.
따라서 이런 구조를 가진 Stack protocol을 먼저을 만들어볼게요~
public struct Stack<T> { private var storage: [T] = [] public init() { } public init(_ elements: [T]){ storage = elements } public mutating func push(_ element: T) { storage.append(element) } @discardableResult public mutating func pop() -> T? { return storage.popLast() } public func peek() -> T? { return storage.last } // MARK: - 스택이 비어있는지 public var isEmpty: Bool { return peek() == nil } // MARK: - 스택의 원소 갯수 public var count: Int? { return storage.count } }
// MARK: -스택 전체를 읽기 위한 Custom String description extension Stack: CustomStringConvertible { public var description: String { let top = "---top---\n" let bottom = "\n--------" let stackElements = storage.map { "\($0)" }.reversed().joined(separator: "\n") return top + stackElements + bottom } }
'Programing > 자료구조(Data structure)' 카테고리의 다른 글
[자료구조] Swift로 풀어보는 덱(Deque) (0) 2020.06.17 [자료구조] Swift로 풀어보는 큐(Queue) (0) 2020.06.16