mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-05 04:27:44 +00:00
* Update lists.nim
* Update tlists.nim
* removed check `if b.tail != nil`
The tail of the list being null it is still possible to retrieve its end by going through all nodes from the head. So checking for null from `b.tail` is unnecessary. However, setting `a.tail = b.tail` only if `a.head != nil`, so you don't break a good list with an already broken one.
(cherry picked from commit dc5c88ca79)
This commit is contained in:
@@ -531,11 +531,12 @@ proc addMoved*[T](a, b: var SinglyLinkedList[T]) {.since: (1, 5, 1).} =
|
||||
ci
|
||||
assert s == [0, 1, 0, 1, 0, 1]
|
||||
|
||||
if a.tail != nil:
|
||||
a.tail.next = b.head
|
||||
a.tail = b.tail
|
||||
if a.head == nil:
|
||||
a.head = b.head
|
||||
if b.head != nil:
|
||||
if a.head == nil:
|
||||
a.head = b.head
|
||||
else:
|
||||
a.tail.next = b.head
|
||||
a.tail = b.tail
|
||||
if a.addr != b.addr:
|
||||
b.head = nil
|
||||
b.tail = nil
|
||||
|
||||
@@ -233,6 +233,18 @@ template main =
|
||||
doAssert l.toSeq == [1]
|
||||
doAssert l.remove(l.head) == true
|
||||
doAssert l.toSeq == []
|
||||
|
||||
block issue19297: # add (appends a shallow copy)
|
||||
var a: SinglyLinkedList[int]
|
||||
var b: SinglyLinkedList[int]
|
||||
|
||||
doAssert a.toSeq == @[]
|
||||
a.add(1)
|
||||
doAssert a.toSeq == @[1]
|
||||
a.add(b)
|
||||
doAssert a.toSeq == @[1]
|
||||
a.add(2)
|
||||
doAssert a.toSeq == @[1, 2]
|
||||
|
||||
static: main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user