class Node{? ?
?let value: T?? ?
?let next: Node?? ? ? ??
init(value: T?, next: Node?) {? ? ? ??
self.value = value? ? ? ??
self.next = next? ?
?}
}
let list = Node(value: 1,? ? ? ? ? ? ? ? next: Node(value: 2,? ? ? ? ? ? ? ? ? ? ? ? ? next: Node(value: 3,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? next: Node(value: 4, next: nil))))
// 單向鏈表? 1 -> 2 -> 3 -> 4
// 上面的單向列表,用 nil 表示空節(jié)點, 不容易理解,也不好維護(hù)
// Swift2 中可以使用 嵌套 enum
?// 這里會提示嵌套 enum 需要加上? indirect 間接
indirect enum LinkedList{? ??
case empty? ??
case node(Element, LinkedList)? ? ? ?
?// 鏈表節(jié)點的刪除方法? ?
?func removing(_ element: Element) ->LinkedList{
guard case let .node(value, next) = self else {
return .empty
}
return value == element ? next : LinkedList.node(value, next.removing(element))
}
}
// 單項鏈表
let linkedList = LinkedList.node(1, .node(2, .node(3, .node(4, .empty))))
let result = linkedList.removing(2)