insque, remque - insert/remove an item from a queue


     #include <stdlib.h>

     void insque(struct qelem *elem, struct qelem *prev));
     void remque(struct qelem *elem));


     insque() and remque() are functions for manipulating  queues
     made from doubly-linked lists.  Each element in this list is
     of type struct qelem

     The qelem structure is defined as

          struct qelem {
              struct    qelem *q_forw;
              struct    qelem *q_back;
              char      q_data[1];

     insque() inserts the element pointed to by elem  immediately
     after  the  element  pointed  to  by prev, which must NOT be

     remque() removes the element pointed to  by  elem  from  the
     doubly-linked list.




     The q_data field is sometimes defined to be type char *, and
     under solaris 2.x, it doesn't appear to exist at all.

     The location of the prototypes for  these  functions  differ
     among  several versions of UNIX.  Some systems place them in
     <search.h>, others in  <string.h>.   Linux  places  them  in
     <stdlib.h> since that seems to make the most sense.

     Some versions of UNIX (like HP-UX  10.x)  do  not  define  a
     struct  qelem  but rather have the arguments to insque() and
     remque() be of type void *.