import Foundation
public struct Queue<T> {
private var list = LinkedList<T>()
public var isEmpty: Bool {
return list.isEmpty
}
// 뒤에 삽입하기
public mutating func enqueue(_ element: T) {
list.append(value: element)
}
// 앞에서 가져오기 (가져오고 삭제)
public mutating func dequeue() -> T? {
guard !list.isEmpty, let element = list.first else { return nil }
list.remove(node: element)
return element.value
}
// 앞에서 가져오기 (가져오고 유지)
public func peek() -> T? {
return list.first?.value
}
}
extension Queue: CustomStringConvertible {
public var description: String {
return list.description
}
}
'아이폰 (IOS)' 카테고리의 다른 글
| [Swift 3.0] Background Mode 이해하기 (1) | 2016.12.01 |
|---|---|
| [Swift 3.0] LinkedList (0) | 2016.11.24 |
| [Swift 3 ] 가장 쉬운 소켓 (TCP) 통신 방법을 찾고 계신가요? (2) | 2016.11.24 |
| iOS 개발에서 스토리보드 란 무엇인가? (0) | 2016.11.22 |
| iOS 와 안드로이드에서의 병렬 쓰레드 개발 (AsyncTask 와 GCD) (0) | 2016.11.21 |