/* Steven Andrews, 4/16/95 *//* Modified substantially 1/15/02 *//* See documentation called queue doc *//* Copyright 2003 by Steven Andrews.  Permission is granted   for non-commercial use of and modifications to the code. */#ifndef __queue_h#define __queue_htypedef struct qstruct{	void **x;	void **k;	int (*keycmp)(void *,void *);	int n;	int f;	int b; } *queue;#define qfrontkey(q) ((q)->b==(q)->f?0:(q)->k[(q)->f])queue qalloc(int n,int (*keycmp)(void *,void *));int qexpand(queue q,int addspace);void qfree(queue q,int freek,int freex);void qnull(queue q);int enqueue(void *k,void *x,queue q);int qpush(void *k,void *x,queue q);int qinsert(void *k,void *x,queue q);void *qfront(queue q,void **kptr);void *qpop(queue q,void **kptr);int qlength(queue q);int qmaxlength(queue q);int qnext(int i,void **kptr,void **xptr,queue q);#endif
