/*Copyright (C) 1992, 1995 by Thomas Glen Smith. All Rights Reserved.*/
/* dequeue APL2 V1.0.0 *************************************************
* Called by apledfr. *
* Dequeue is called to remove an element from a doubly-linked list. *
* Returns a pointer to the prior element in the list. *
***********************************************************************/
#define INCLUDES 0
#include "includes.h"
typedef struct el *El;
struct el { /* stack entry */
El nxt;
El lst;
};
struct el *dequeue(hdr,del)
El hdr; /* head of list */
El del; /* element to dequeue */
{
El pre,suc;
pre = del->lst; /* predecessor in list, or NULL if first */
suc = del->nxt; /* successor in list, or NULL if last */
if (pre == NULL)
hdr->nxt = suc;
else pre->nxt = suc;
if (suc == NULL)
hdr->lst = pre;
else suc->lst = pre;
return(pre);
}