File: insque.c

package info (click to toggle)
binutils-m68k-linux 2.8.1.0.15-1
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 27,220 kB
  • ctags: 37,508
  • sloc: ansic: 334,116; asm: 19,698; exp: 8,825; makefile: 6,278; yacc: 4,565; sh: 3,654; lisp: 2,728; lex: 1,362; sed: 541; cpp: 188; awk: 24
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;
}