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() {
}
}