ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자료구조] 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
        }
    }

     

    댓글

Designed by Tistory.