summary refs log tree commit diff stats
path: root/lib/pure/collections/lists.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2018-12-12 16:29:46 +0100
committerGitHub <noreply@github.com>2018-12-12 16:29:46 +0100
commita1bf9fd2b6525e613899c5dc0380fb80021ee3e7 (patch)
treed2bdb332c973d2f6d43391369229cc732642c74d /lib/pure/collections/lists.nim
parenta38f35359738534ba856d02f3564d5fbc2dfc822 (diff)
parent070bcf4cea28a3238089379f5884787b2084b2de (diff)
downloadNim-a1bf9fd2b6525e613899c5dc0380fb80021ee3e7.tar.gz
Merge branch 'devel' into sorted_deduplicate
Diffstat (limited to 'lib/pure/collections/lists.nim')
-rw-r--r--lib/pure/collections/lists.nim15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/pure/collections/lists.nim b/lib/pure/collections/lists.nim
index 0b3708a7c..15ce5d074 100644
--- a/lib/pure/collections/lists.nim
+++ b/lib/pure/collections/lists.nim
@@ -140,11 +140,26 @@ proc contains*[T](L: SomeLinkedCollection[T], value: T): bool {.inline.} =
   ## exist, true otherwise.
   result = find(L, value) != nil
 
+proc append*[T](L: var SinglyLinkedList[T],
+                n: SinglyLinkedNode[T]) {.inline.} =
+  ## appends a node `n` to `L`. Efficiency: O(1).
+  n.next = nil
+  if L.tail != nil:
+    assert(L.tail.next == nil)
+    L.tail.next = n
+  L.tail = n
+  if L.head == nil: L.head = n
+
+proc append*[T](L: var SinglyLinkedList[T], value: T) {.inline.} =
+  ## appends a value to `L`. Efficiency: O(1).
+  append(L, newSinglyLinkedNode(value))
+
 proc prepend*[T](L: var SinglyLinkedList[T],
                  n: SinglyLinkedNode[T]) {.inline.} =
   ## prepends a node to `L`. Efficiency: O(1).
   n.next = L.head
   L.head = n
+  if L.tail == nil: L.tail = n
 
 proc prepend*[T](L: var SinglyLinkedList[T], value: T) {.inline.} =
   ## prepends a node to `L`. Efficiency: O(1).