Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 양궁대회
- coremotion
- til
- TableView Section
- 테이블뷰 나누기
- TableView
- Array vs Linked List
- CarouselCollectionview
- 면접을 위한 CS전공 지식 노트
- @escaping
- SWIFT
- UserDefaults
- Carousel CollectionView
- firebase
- 면접을 위한 CS 전공 지식 노트 Tree
- 자료구조
- class struct
- Reference Cycle
- ReferceCycle
- CoreData
- wil
- retain cycle
- 프로그래머스
- 롤케이크 자르기
- 강한 참조 순환
- Input Output
- UIKit
- tableview section별 다른 cell적용
- NavigationSearchBar
- Value Type Reference Type
Archives
- Today
- Total
개발하는 동글 :]
[자료구조] Stack and Queue Swift로 Stack, Queue 구현 해보기 본문
Stack [스택]
Stack은 가장 마지막으로 들어간 데이터가 가장 첫 번째로 나오는 성질 LIFO, Last In First Out 을 가진 자료 구조
스택 접근 탐색 삽입 삭제
평균 | O(n) | O(n) | O(1) | O(1) |
- 재귀적인 함수, 알고리즘에 사용되며 웹 브라우저 방문 기록 등에 사용
- 삽입 : Push
- 삭제 : Pop

Queue [큐]
Queue는 먼저 집어넣은 데이터가 먼저 나오는 성질 FIFO, First In First Out을 지닌 자료 구조
큐 접근 탐색 삽입 삭제
평균 | O(n) | O(n) | O(1) | O(1) |
- 삽입 : Enqueue
- 삭제 : Dequeue

Swift로 Stack과 Queue를 구현해 보기
struct Stack<T> {
private var elements: [T] = []
mutating func push(newElement: T) {
elements.append(newElement)
}
mutating func pop() -> T? {
return elements.popLast()
}
}
struct Queue<T> {
private var elements: [T] = []
mutating func enqueue(newElement: T) {
elements.append(newElement)
}
mutating func dequeue() -> T?{
return elements.removeFirst()
}
}
var stack: Stack<Int> = .init()
stack.push(newElement: 1)
stack.push(newElement: 2)
stack.push(newElement: 3)
stack.pop()//3
stack.pop()//2
stack.pop()//1
var queue: Queue<String> = .init()
queue.enqueue(newElement: "say hi")
queue.enqueue(newElement: "say bye")
queue.dequeue()//"say hi"
queue.dequeue()//"say bye"