diff --git a/util.d b/util.d index 778c2d3..8a34bba 100644 --- a/util.d +++ b/util.d @@ -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 {