Data Structure 3

Linked List (with Swift) - Removing values

이번에는 Linked List에서의 값을 삭제하는 방법에 대해서 알아보겠습니다. pop : List의 앞에 있는 값을 삭제 removeLast : List의 제일 마지막에 있는 값을 삭제 remove(at: ) : List의 어딘가에 있는 값을 삭제 우선 pop부터 살펴보겠습니다. 제일 앞의 요소를 pop한다면 head가 현재 head의 nextNode로 바뀌게 될 것입니다. 그리고 pop을 했을 시 비어버리는 경우도 생각해야 합니다. 마지막으로 pop을 해준 요소를 리턴해 줍니다. 코드로 나타내 보겠습니다. @discardableResult public mutating func pop() -> T? { defer { //2 head = head?.nextNode if isEmpty { tail = ni..

Data Structure 2020.12.11

Linked List (with Swift) - Node and Adding Values to List

Linked List란 선형의 단방향으로 이루어진 값들의 집합이라 할 수 있습니다. Linked List는 Swift의 Array와 같은 연속적인 저장에 다양한 이론적인 이점을 가지고 있습니다. (상수 시간에 삽입과 삭제가 이루어질 수 있음) 위의 그림과 같이 Linked List는 Node들이 연결된 형태로 존재합니다. Node? Node는 값을 가질 수 있고, 또한 다음 Node와의 Reference를 가집니다. 만약 Reference의 값이 nil 이라면 이 Node가 마지막이라는 의미가 됩니다. Node 타입을 코드로 작성해 보면 public class JoonsNode { public var value: T public var nextNode: JoonsNode? public init(value..

Data Structure 2020.12.10

Stack (with Swift)

Stack은 한국말로 '쌓다' 라는 뜻을 가지고 있습니다. Data Structure에서의 Stack도 개념적으로 실세계의 Stack의 의미와 동일합니다. 어떤 물건을 쌓을때는 위에다가 차곡차곡 쌓습니다. 무거운 20KG짜리 원판을 쌓아올린다고 생각해 봅시다. 20KG 원판을 쌓을때는 제일 바닥에서 부터 쌓아올립니다. 그렇다면 원판을 제거할 때에는 어떻게 할까요? 🧐 바로 이렇게 위에서 부터 제거할 수 있습니다. Data Structure에서의 Stack 또한 이러한 역할을 하게 됩니다. 그리고 이러한 구조를 LIFO (Last-In First-Out)이라고 표현할 수도 있습니다. DataStructure에서의 Stack에서는 아래에서 부터 차곡차곡 어떠한 요소를 쌓는 과정을 Push라고 하고, 위에서 ..

Data Structure 2020.12.10