//создать новый элемент и поместить его в списке перед before //если before==nullptr элемент помещается в конец списка //возвращает указатель на созданный элемент Type *InsertBefore(const Type *before, const Type *item=nullptr) {return (Type*)CInsertBefore((void*)before, (void*)item);}
void *CDList::CInsertAfter(void *a, void *item) { Node *After=a ? (Node*)((BYTE*)a-sizeof(Node)) : &root; return CInsertBefore((BYTE*)After->next+sizeof(Node), item); }
//создать новый элемент и поместить его в конец сприска //возвращает указатель на созданный элемент Type *Push(const Type *item=nullptr) {return (Type*)CInsertBefore(nullptr, (void*)item);}