|
Last change
on this file since 2410 was 2, checked in by bird, 23 years ago |
|
Initial revision
|
-
Property cvs2svn:cvs-rev
set to
1.1
-
Property svn:eol-style
set to
native
-
Property svn:executable
set to
*
|
|
File size:
1.1 KB
|
| Line | |
|---|
| 1 | /* insque(3C) routines
|
|---|
| 2 | This file is in the public domain. */
|
|---|
| 3 |
|
|---|
| 4 | /*
|
|---|
| 5 |
|
|---|
| 6 | @deftypefn Supplemental void insque (struct qelem *@var{elem}, struct qelem *@var{pred})
|
|---|
| 7 | @deftypefnx Supplemental void remque (struct qelem *@var{elem})
|
|---|
| 8 |
|
|---|
| 9 | Routines to manipulate queues built from doubly linked lists. The
|
|---|
| 10 | @code{insque} routine inserts @var{elem} in the queue immediately
|
|---|
| 11 | after @var{pred}. The @code{remque} routine removes @var{elem} from
|
|---|
| 12 | its containing queue. These routines expect to be passed pointers to
|
|---|
| 13 | structures which have as their first members a forward pointer and a
|
|---|
| 14 | back pointer, like this prototype (although no prototype is provided):
|
|---|
| 15 |
|
|---|
| 16 | @example
|
|---|
| 17 | struct qelem @{
|
|---|
| 18 | struct qelem *q_forw;
|
|---|
| 19 | struct qelem *q_back;
|
|---|
| 20 | char q_data[];
|
|---|
| 21 | @};
|
|---|
| 22 | @end example
|
|---|
| 23 |
|
|---|
| 24 | @end deftypefn
|
|---|
| 25 |
|
|---|
| 26 | */
|
|---|
| 27 |
|
|---|
| 28 |
|
|---|
| 29 | struct qelem {
|
|---|
| 30 | struct qelem *q_forw;
|
|---|
| 31 | struct qelem *q_back;
|
|---|
| 32 | };
|
|---|
| 33 |
|
|---|
| 34 |
|
|---|
| 35 | void
|
|---|
| 36 | insque (elem, pred)
|
|---|
| 37 | struct qelem *elem;
|
|---|
| 38 | struct qelem *pred;
|
|---|
| 39 | {
|
|---|
| 40 | elem -> q_forw = pred -> q_forw;
|
|---|
| 41 | pred -> q_forw -> q_back = elem;
|
|---|
| 42 | elem -> q_back = pred;
|
|---|
| 43 | pred -> q_forw = elem;
|
|---|
| 44 | }
|
|---|
| 45 |
|
|---|
| 46 |
|
|---|
| 47 | void
|
|---|
| 48 | remque (elem)
|
|---|
| 49 | struct qelem *elem;
|
|---|
| 50 | {
|
|---|
| 51 | elem -> q_forw -> q_back = elem -> q_back;
|
|---|
| 52 | elem -> q_back -> q_forw = elem -> q_forw;
|
|---|
| 53 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.