2024년 3월 10일 일요일
- swift 기본 개념 중, queued와 stack에 대해 명확하게 이해하는 것이 오늘의 목표!
- data에 대한 개념으로 array 등을 이용하여 직접 구현할 수 있도록 한다.
1. 큐
2. 스택
1. 큐 (Queue)
- First-In-First-Out (FIFO)
- 먼저 들어온 값을 먼저 내보내는 구조
※ 예 : 버블티 빨대
/*
<T> 는
제네릭이라는 것인데, 하나의 타입으로 국한되지 않고
타입에 유연하게 코드를 작성할 수 있는 기능.
*/
struct Queue<T> {
private var queue: [T] = []
public var count: Int {
return queue.count
}
public var isEmpty: Bool {
return queue.isEmpty
}
public mutating func enqueue(_ element: T) {
queue.append(element)
}
public mutating func dequeue() -> T? {
return isEmpty ? nil : queue.removeFirst()
}
}
var queue = Queue<Int>()
queue.enqueue(10)
queue.enqueue(20)
queue.dequeue() // 10
2. 스택 (Stack)
- Last-In-First-Out (LIFO)
- 먼저 들어온 값을 가장 마지막에 내보내는 구조
※ 예 : 구덩이, iOS 개발 시 Navigation
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(10)
stack.push(20)
stack.pop() // 20
'iOS 앱 개발자 프로젝트 > Swift 문법 정복하기' 카테고리의 다른 글
[Swift] Class, Struct, Enum (0) | 2024.03.11 |
---|---|
[Swift] array, set, dictionary and OOP (1) | 2024.03.10 |
[Swift] optional & nil (0) | 2024.03.08 |
[Swift] if, switch & for, while (4) | 2024.03.07 |
[Swift] Data Types and Operators (2) | 2024.03.06 |