๋ฐ์ํ
์๋ ํ์ธ์~
์ค๋์ ์คํ์ ์ด์ด์ ํ์ ๋ํด์ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค : )
[ ์คํ ํฌ์คํ ]
์คํ์ LIFO(Last In First Out)์ด์๋ค๋ฉด
ํ๋ FIFO(First In First Out)๋ก
๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๊ฒ ๋๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์คํ์์๋ Push์ Pop์ด๋ผ๋ ๋ฉ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๊บผ๋๋ค๋ฉด
ํ์์๋ Enqueue์ Dequeue๋ผ๊ณ ํฉ๋๋ค.
โ๏ธ Swift๋ก ๊ตฌํํด ๋ณด๊ธฐ
// ์ ๋ค๋ฆญ
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? {
// ์คํ์์๋ removeLast()๋ฅผ ์ฌ์ฉํ์ง๋ง ํ์์๋ removeFirst()
return isEmpty ? nil : queue.removeFirst()
}
}
์คํ๊ณผ ๋น์ทํ ํํ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค.
์คํ๊ณผ ํ๋ ๋ณต์กํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์๋๋ผ ์ฝ๊ฒ ์ ๋ฆฌ๊ฐ ๋์๋ ๊ฒ ๊ฐ๋ค์.
[ ๋ค์ ํฌ์คํ ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)์ ๋๋ค. ]
๊ทธ๋ผ ์ด๋ง ๐๐ป ๐๐ป ๐๐ป
๋ฐ์ํ
'์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ์๋ฃ๊ตฌ์กฐ - ํ(Heap) (0) | 2023.01.30 |
---|---|
[Swift] ์๋ฃ๊ตฌ์กฐ - ์ด์ง ํ์ํธ๋ฆฌ ( Binary Search Tree ) (0) | 2022.05.14 |
[Swift] ์๋ฃ๊ตฌ์กฐ - ํด์ ํ ์ด๋ธ(Hash Table) (0) | 2022.04.21 |
[Swift] ์๋ฃ๊ตฌ์กฐ - ๋จ๋ฐฉํฅ / ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List) (2) | 2022.04.20 |
[Swift] ์๋ฃ๊ตฌ์กฐ - ์คํ(Stack) (0) | 2022.04.18 |