Sha256: 493f080995d80e27fd1cdb3e12a3551ef43e7643eb228d5e05391a3bae52ff4a
Contents?: true
Size: 1005 Bytes
Versions: 396
Compression:
Stored size: 1005 Bytes
Contents
class Deque<T> { private var head: Element<T>? = null fun push(value: T) { if(head == null) { head = Element(value) head?.prev = head head?.next = head } else { val oldTail = head?.prev val tail = Element(value, prev = oldTail, next = head) oldTail?.next = tail head?.prev = tail } } fun pop(): T? { head = head?.prev return shift() } fun unshift(value: T) { push(value) head = head?.prev } fun shift(): T? { val value = head?.value val newHead = head?.next val newTail = head?.prev if (newHead == head) { head = null } else { newHead?.prev = newTail newTail?.next = newHead head = newHead } return value } private data class Element<T>(val value: T, var prev: Element<T>? = null, var next: Element<T>? = null) }
Version data entries
396 entries across 396 versions & 1 rubygems