| /* insque(3C) routines |
| This file is in the public domain. */ |
| |
| /* |
| NAME |
| insque, remque -- insert, remove an element from a queue |
| |
| SYNOPSIS |
| struct qelem { |
| struct qelem *q_forw; |
| struct qelem *q_back; |
| char q_data[]; |
| }; |
| |
| void insque (struct qelem *elem, struct qelem *pred) |
| |
| void remque (struct qelem *elem) |
| |
| DESCRIPTION |
| Routines to manipulate queues built from doubly linked lists. |
| The insque routine inserts ELEM in the queue immediately after |
| PRED. The remque routine removes ELEM from its containing queue. |
| */ |
| |
| |
| 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; |
| } |