mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
Fix remove on last node of singly-linked list [backport:1.6] (#19353)
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
- `macros.parseExpr` and `macros.parseStmt` now accept an optional
|
||||
filename argument for more informative errors.
|
||||
- Module `colors` expanded with missing colors from the CSS color standard.
|
||||
- Fixed `lists.SinglyLinkedList` being broken after removing the last node ([#19353](https://github.com/nim-lang/Nim/pull/19353)).
|
||||
|
||||
## `std/smtp`
|
||||
|
||||
|
||||
@@ -739,6 +739,8 @@ proc remove*[T](L: var SinglyLinkedList[T], n: SinglyLinkedNode[T]): bool {.disc
|
||||
if prev.next == nil:
|
||||
return false
|
||||
prev.next = n.next
|
||||
if L.tail == n:
|
||||
L.tail = prev # update tail if we removed the last node
|
||||
true
|
||||
|
||||
proc remove*[T](L: var DoublyLinkedList[T], n: DoublyLinkedNode[T]) =
|
||||
|
||||
@@ -258,5 +258,18 @@ template main =
|
||||
a.add(2)
|
||||
doAssert a.toSeq == @[1, 2]
|
||||
|
||||
block RemoveLastNodeFromSinglyLinkedList:
|
||||
var list = initSinglyLinkedList[string]()
|
||||
let n1 = newSinglyLinkedNode("sonic")
|
||||
let n2 = newSinglyLinkedNode("the")
|
||||
let n3 = newSinglyLinkedNode("tiger")
|
||||
let n4 = newSinglyLinkedNode("hedgehog")
|
||||
list.add(n1)
|
||||
list.add(n2)
|
||||
list.add(n3)
|
||||
list.remove(n3)
|
||||
list.add(n4)
|
||||
doAssert list.toSeq == @["sonic", "the", "hedgehog"]
|
||||
|
||||
static: main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user