기초 - 큐(🦩)
6235 단어 알고리즘과 자료구조알고리즘과 자료구조
큐Queue
줄세우기
먼저 들어간게 먼저 나온다
- enqueuing O(1)
- dequeuing O(n)
LinkedList로 만들기 ( 다음 글에서 )
enqueue, dequeue, peek 기능
public struct Queue<T> {
fileprivate var list = LinkedList<T>()
public var isEmpty: Bool {
return list.isEmpty
}
public mutating func enqueue(_ element: T) {
list.append(element)
}
public mutating func dequeue() -> T? {
//리스트가 비어있지 않을 때 리스트이 첫번째 원소를 element에 할당한다
guard !list.isEmpty, let element = list.first else { return nil }
list.remove(element)
return element.value
}
//옵셔널로 처리해서 값이 없으면 nil을 리턴함
public func peek() -> T? {
return list.first?.value
}
}
var queue = Queue<Int>()
queue.enqueue(10)
queue.enqueue(5)
queue.enqueue(37)
print(queue) //Queue(list: [10, 5, 37])
//CustomStringConvertible 프로토콜을 사용하면 String타입의 computed property인 description를 구현한다 (read only)
extension Queue: CustomStringConvertible {
public var description: String {
return list.description
}
}
출처
https://www.raywenderlich.com/848-swift-algorithm-club-swift-queue-data-structure
https://github.com/raywenderlich/swift-algorithm-club
Author And Source
이 문제에 관하여(기초 - 큐(🦩)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@msi753/알고리즘과-자료-구조-기초-큐저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)