1178825Sdfr/* insque(3C) routines 2178825Sdfr This file is in the public domain. */ 3178825Sdfr 4178825Sdfr/* 5178825Sdfr 6178825Sdfr@deftypefn Supplemental void insque (struct qelem *@var{elem}, struct qelem *@var{pred}) 7178825Sdfr@deftypefnx Supplemental void remque (struct qelem *@var{elem}) 8178825Sdfr 9178825SdfrRoutines to manipulate queues built from doubly linked lists. The 10178825Sdfr@code{insque} routine inserts @var{elem} in the queue immediately 11178825Sdfrafter @var{pred}. The @code{remque} routine removes @var{elem} from 12178825Sdfrits containing queue. These routines expect to be passed pointers to 13178825Sdfrstructures which have as their first members a forward pointer and a 14178825Sdfrback pointer, like this prototype (although no prototype is provided): 15178825Sdfr 16178825Sdfr@example 17178825Sdfrstruct qelem @{ 18178825Sdfr struct qelem *q_forw; 19178825Sdfr struct qelem *q_back; 20178825Sdfr char q_data[]; 21178825Sdfr@}; 22178825Sdfr@end example 23178825Sdfr 24178825Sdfr@end deftypefn 25178825Sdfr 26178825Sdfr*/ 27178825Sdfr 28178825Sdfr 29178825Sdfrstruct qelem { 30178825Sdfr struct qelem *q_forw; 31178825Sdfr struct qelem *q_back; 32178825Sdfr}; 33178825Sdfr 34178825Sdfr 35178825Sdfrvoid 36178825Sdfrinsque (struct qelem *elem, struct qelem *pred) 37178825Sdfr{ 38178825Sdfr elem -> q_forw = pred -> q_forw; 39178825Sdfr pred -> q_forw -> q_back = elem; 40178825Sdfr elem -> q_back = pred; 41178825Sdfr pred -> q_forw = elem; 42178825Sdfr} 43178825Sdfr 44178825Sdfr 45178825Sdfrvoid 46178825Sdfrremque (struct qelem *elem) 47178825Sdfr{ 48178825Sdfr elem -> q_forw -> q_back = elem -> q_back; 49178825Sdfr elem -> q_back -> q_forw = elem -> q_forw; 50178825Sdfr} 51178825Sdfr