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