Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- indirect enum LinkedList<T> {
- case value(element: T, next: LinkedList<T>)
- case end
- }
- extension LinkedList: Sequence {
- func makeIterator() -> LinkedListIterator<T> {
- return LinkedListIterator(current: self)
- }
- }
- struct LinkedListIterator<T>: IteratorProtocol {
- var current: LinkedList<T>
- mutating func next() -> T? {
- switch current {
- case . value(let element, let next):
- self.current = next
- return element
- case .end:
- return nil
- }
- }
- }
- let x3: LinkedList<Int> = .end
- let x2: LinkedList<Int> = .value(element: 3, next: x3)
- let x1: LinkedList<Int> = .value(element: 32, next: x2)
- let x: LinkedList<Int> = .value(element: 23, next: x1)
- x.forEach {
- print($0)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement