๋ฑ
์คํ๊ณผ ํ์ ํน์ฑ์ ๋ชจ๋ ๊ฐ๋, ๋์ ์กฐํฉํ ํํ์ ์๋ฃ๊ตฌ์กฐ
๋ฑ์ ADT(Abstract Data Type)๋ฅผ ๊ตฌ์ฑํ๋ ํต์ฌ ํจ์ ๋ค๊ฐ์ง์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์์ผ๋ก ๋ฃ๊ธฐ
- ๋ค๋ก ๋ฃ๊ธฐ
- ์์์ ๋นผ๊ธฐ
- ๋ค์์ ๋นผ๊ธฐ
๋ฑ์ ๋จธ๋ฆฌ์์ ์ถ๊ฐ์ ์ญ์ ๊ฐ ์ด๋ค์ง๋ ๊ฒ์ ๋ฌผ๋ก ๊ผฌ๋ฆฌ์ ์์นํ ๋ ธ๋์์ ์ถ๊ฐ์ ์ญ์ ๊ฐ ์ด๋ค์ง๋ค๋ ์ ์์ ์๋ฐฉํฅ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฑ์ ๊ตฌํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ , ์ด๋ ๋ฑ ๊ตฌํ์ ์์ด์ ๋งค์ฐ ์ข์ ์ ํ์ด๋ผ ํ ์ ์๋ค.
์ฌ๊ธฐ์ ๊ฐ๋จํ๊ฒ๋ง ๋ฑ์ ๊ตฌํํด๋ณด์๋ค.
class Deque<T>{
var enQueue: [T]
var deQueue: [T] = []
var count: Int {
return enQueue.count + deQueue.count
}
var isEmpty: Bool {
return enQueue.isEmpty && deQueue.isEmpty
}
init(_ queue: [T]) {
enQueue = queue
}
func pushFirst(_ element: T) {
deQueue.append(element)
}
func pushLast(_ element: T) {
enQueue.append(element)
}
func popFirst() -> T {
if deQueue.isEmpty {
deQueue = enQueue.reversed()
enQueue.removeAll()
}
return deQueue.popLast()!
}
func popLast() -> T {
if enQueue.isEmpty {
enQueue = deQueue.reversed()
deQueue.removeAll()
}
return enQueue.popLast()!
}
}
๋ฐ์ํ
'๐ป CS > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํ(Heap) ๊ตฌํํด๋ณด๊ธฐ (0) | 2023.04.11 |
---|---|
[Swift] ๊ทธ๋ํ(Graph) (0) | 2023.03.29 |
[Swift] ์คํ ๊ตฌํํด๋ณด๊ธฐ (0) | 2023.03.29 |
[Swift] ํ(Queue) ๊ตฌํํ๊ธฐ (0) | 2023.03.24 |
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ (0) | 2023.03.23 |