Swift 泛型 链表实现栈

Swift 泛型 链表实现栈
最近在学习Swift相关,然后用数据结构练手

protocol StackProtocol {
    //协议使用范型
  /*定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型(任意类型)提供了一个占位名(或者说别名),其代表的实际类型在协议被采纳时才会被指定。你可以通过 associatedtype 关键字来指定关联类型,当然你也可以用来设计api用来构建统一的处理结构。*/
    associatedtype T
    func getSize()->Int
    func push(data:T?)
    func pop<T>()->T
    func isEmpty()->Bool
}

class Stack <T>:StackProtocol{
    var first:Node<T>? = nil
    var N:Int = 0
    func getSize() -> Int {
        return N
    }
    
    func push(data: T?) {
        var oldNode = first
        first = Node()
        first?.data = data
        first?.next = oldNode
        N = N + 1
    }
    
    func pop<T>() -> T {
        let data:T = first?.data as! T
        first = first?.next
        N = N - 1
        return data
        
    }
    
   
   
    
    func isEmpty() -> Bool {
        return N==0
    }
    
     class Node<T>{
        var data:T? = nil
        var next:Node<T>?
    }
    init() {
        
    }
    
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值