先占坑,有时间再详细解释
//MARK: - 队列的基本实现
public struct Queue<T> {
// 泛型数组:用于存储数据元素
fileprivate var data = [T]()
/// 构造函数:创建一个空的队列
public init() {}
/// 入队列操作:将元素添加到队列的末尾
/// -复杂度: O(1)
/// -参数element: 一个类型为T的元素
public mutating func enqueue(_ element: T) {
data.append(element)
}
/// 出队列操作:删除并返回队列中的第一个元素
/// -returns:
/// -如果队列不为空,则返回第一个类型为T的元素
/// -如果队列为空,则返回nil
public mutating func dequeue() -> T? {
return data.removeFirst()
}
/// 返回队列中的第一个元素(不删除)
/// -returns:
/// -如果队列不为空,则返回第一个类型为T的元素
/// -如果队列为空,则返回nil
public func peek() -> T? {
return data.first
}
/// 将队列重置为空状态
public mutating func clear() {
data.removeAll()
}