File: insque.c

package info (click to toggle)
gdb 4.17-4.m68k.objc.threads.hwwp.fpu.gnat.3.1
  • links: PTS
  • area: main
  • in suites: slink
  • size: 43,580 kB
  • ctags: 65,939
  • sloc: ansic: 545,979; exp: 17,626; makefile: 7,522; yacc: 6,119; sh: 6,001; asm: 2,813; cpp: 2,051; lisp: 1,820; sed: 527; lex: 518; awk: 170; fortran: 5
file content (50 lines) | stat: -rw-r--r-- 930 bytes parent folder | download | duplicates (33)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* 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;
}