source: branches/libc-0.6/src/binutils/libiberty/insque.c

Last change on this file was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • 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
9Routines to manipulate queues built from doubly linked lists. The
10@code{insque} routine inserts @var{elem} in the queue immediately
11after @var{pred}. The @code{remque} routine removes @var{elem} from
12its containing queue. These routines expect to be passed pointers to
13structures which have as their first members a forward pointer and a
14back pointer, like this prototype (although no prototype is provided):
15
16@example
17struct 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
29struct qelem {
30 struct qelem *q_forw;
31 struct qelem *q_back;
32};
33
34
35void
36insque (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
47void
48remque (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.