freebsd-dev/contrib/libg++/libiberty/insque.c
Peter Wemm 5acb90c9b6 Import of raw libg++-2.7.2, but in a very cut-down form. There is still
a small amount of unused stuff (by the bmakefiles to follow), but it
isn't much and seems harmless enough.
1996-10-03 21:35:18 +00:00

51 lines
930 B
C

/* 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;
}