linked list removes no longer set next/prev = nil

This commit is contained in:
Matthew 2025-09-15 04:54:05 +10:00
parent 0e14e5cce5
commit 1e9d82f00e

16
util.d
View File

@ -174,17 +174,16 @@ DLLRemove(T, U)(T* list, U* node, U* nil)
node.next.prev = node.prev;
node.prev.next = node.next;
}
node.prev = node.next = nil;
}
void
DLLPushFront(T, U)(T* list, U* node, U* nil)
{
node.prev = node.next = nil;
if (CheckNil(nil, list.first))
{
list.first = list.last = node;
node.prev = node.next = nil;
}
else
{
@ -198,10 +197,11 @@ DLLPushFront(T, U)(T* list, U* node, U* nil)
void
DLLPush(T, U)(T* list, U* node, U* nil)
{
node.prev = node.next = nil;
if (CheckNil(nil, list.first))
{
list.first = list.last = node;
node.prev = node.next = nil;
}
else
{
@ -320,17 +320,16 @@ SLLRemove(T, U)(T* list, U* node, U* prev, U* nil)
{
prev.next = node.next;
}
node.next = nil;
}
pragma(inline) void
SLLPushFront(T, U)(T* list, U* node, U* nil)
{
node.next = nil;
if (CheckNil(nil, list.first))
{
list.first = list.last = node;
node.next = nil;
}
else
{
@ -342,10 +341,11 @@ SLLPushFront(T, U)(T* list, U* node, U* nil)
pragma(inline) void
SLLPush(T, U)(T* list, U* node, U* nil)
{
node.next = nil;
if (CheckNil(nil, list.first))
{
list.first = list.last = node;
node.next = nil;
}
else
{