first in first out

今天写了一个容器,first in first out,代码如下:

class Node<T>:NSObject{
    let data:T
    init(data:T) {
        self.data = data
    }
    
    var next:Node?
}
/// 先进先出的算法。
class FirstInFirstOut<T> {
    private var head:Node<T>? = nil
    private var rear:Node<T>? = nil
    private(set) var count:Int = 0
    
    var isEmpty:Bool{
        return count == 0
    }
    
    /// 加入数据
    func push(object:T){
        if isEmpty {
            head = Node(data: object)
            head?.next = nil
            
            rear = head
            
        }else{
            rear?.next = Node(data: object)
            rear = rear?.next
        }
        count += 1
    }
    
    ///拿出数据
    func pop() -> T?{
        guard !isEmpty else {
            return nil
        }
        
        let res = head!.data
        head = head?.next
        
        count -= 1
        
        return res
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,695评论 25 708
  • 2016-12-14 压抑红,从小缺乏关爱鼓励和赞美,缺少安全感,长大后情感中这样的需求使然驱使寻找,健康红色,活...
    无妄不二阅读 118评论 0 0
  • 谁动了我的日记? 他们都翻开了! 事情发生在高中毕业那年的暑假。我和几个同学约好了时间去找暑假工作,想借此锻炼锻炼...
    猫眼小先生阅读 172评论 0 0
  • 黑色的星期一总是在彰显着它无与伦比的暗黑力量。 开早会,升旗仪式,整理补充资料,备课,打印封面,吃...
    二苗_5c0f阅读 250评论 0 0