#define push(A,B) ((A && A!=B)?A->_next=B:0,B=A)
#define pop(A,B) (B?((A?free(A):0),A=B=B->_next):(A=NULL))
#define append(A,B) if(B) { void *N=A; A->_next=NULL; for_search(A,B,!A->_next) {A->_next=N; break;}} else push(A,B);
-#define remove(A,B,C) { void **_D=NULL; for_search(A,B,C) { if(_D)*_D=A->_next; else B=A->_next; free(A); A=NULL;} else _D=(void *)&(A->_next); }
+#define remove(A,B,C) { void **_D=NULL; for_search(A,B,C) { if(_D)*_D=A->_next; else B=A->_next; free(A); } else _D=(void *)&(A->_next); }
#define drop(A,B) for( A=B; A || (B=NULL); B=A, A=A->_next, free(B) )
/* ------------------------------------------------------------------- */
/* 3. C<<1 iterators - updated 2008-01-07 by xCh. */