/* insque(3C) routines This file is in the public domain. */ /* @deftypefn Supplemental void insque (struct qelem *@var{elem}, struct qelem *@var{pred}) @deftypefnx Supplemental void remque (struct qelem *@var{elem}) Routines to manipulate queues built from doubly linked lists. The @code{insque} routine inserts @var{elem} in the queue immediately after @var{pred}. The @code{remque} routine removes @var{elem} from its containing queue. These routines expect to be passed pointers to structures which have as their first members a forward pointer and a back pointer, like this prototype (although no prototype is provided): @example struct qelem @{ struct qelem *q_forw; struct qelem *q_back; char q_data[]; @}; @end example @end deftypefn */ struct qelem { struct qelem *q_forw; struct qelem *q_back; }; void insque (elem, pred) struct qelem *elem; struct qelem *pred; { elem -> q_forw = pred -> q_forw; pred -> q_forw -> q_back = elem; elem -> q_back = pred; pred -> q_forw = elem; } void remque (elem) struct qelem *elem; { elem -> q_forw -> q_back = elem -> q_back; elem -> q_back -> q_forw = elem -> q_forw; }