Skip to content

Instantly share code, notes, and snippets.

@cdunn95
Created August 21, 2019 15:49
Show Gist options
  • Save cdunn95/db82a3edfd8d5ff6f0f5822e62153d17 to your computer and use it in GitHub Desktop.
Save cdunn95/db82a3edfd8d5ff6f0f5822e62153d17 to your computer and use it in GitHub Desktop.
class Node<T: Equatable>: Equatable {
var value: T
var next: Node<T>? = nil
var prev: Node<T>? = nil
init(value: T) {
self.value = value
}
static func == (lhs: Node<T>, rhs: Node<T>) -> Bool {
return lhs.value == rhs.value
}
}
class DoublyLinkedList<T: Equatable> {
var head: Node<T>? = nil
var tail: Node<T>? = nil
var size: Int = 0
func append(value: T) {
// 1
let newNode = Node(value: value)
// 2
guard self.head != nil else {
// 3
self.head = newNode
self.tail = newNode
self.size += 1
return
}
// 4
self.tail?.next = newNode
newNode.prev = self.tail
self.tail = newNode
// 5
self.size += 1
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment