95 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/******************************************************************
 | 
						|
**
 | 
						|
** QUEUE.H:
 | 
						|
**
 | 
						|
**    ADT Queue Implementation
 | 
						|
**
 | 
						|
** This file is part of Apt Abstract Data Types (ADT)
 | 
						|
** Copyright (c) 1991 -- Apt Technologies
 | 
						|
** All rights reserved
 | 
						|
**
 | 
						|
******************************************************************/
 | 
						|
//http://www.koders.com/c/fid7B82D8DDECE4EDC672F17D970458033C4079A615.aspx?s=queue
 | 
						|
 | 
						|
/*
 | 
						|
** This ADT, originally written in 1989, provides a general queue
 | 
						|
** implementation--in C--which is the equivalent of the Java Vector.
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef QUEUE_H
 | 
						|
#define QUEUE_H
 | 
						|
 | 
						|
/* ---------- Headers */
 | 
						|
 | 
						|
#include "apt.h"
 | 
						|
 | 
						|
/* ---------- Types */
 | 
						|
 | 
						|
typedef struct _QueueItem {
 | 
						|
  void *element;
 | 
						|
  int type;
 | 
						|
  struct _QueueItem *next;
 | 
						|
} _QueueItem, *QueueItem;
 | 
						|
 | 
						|
typedef struct _Queue {
 | 
						|
  struct _QueueItem *head;
 | 
						|
  struct _QueueItem *tail;
 | 
						|
  int size;
 | 
						|
} _Queue, *Queue;
 | 
						|
 | 
						|
/* ---------- Exported Function Prototypes */
 | 
						|
 | 
						|
#ifdef __ANSI_C__
 | 
						|
void QueueApply(Queue, ApplyFunction);
 | 
						|
void QueueApply1(Queue, void*, ApplyFunction1);
 | 
						|
void QueueApply2(Queue, void*, void*, ApplyFunction2);
 | 
						|
void QueueApply3(Queue, void*, void*, void*, ApplyFunction3);
 | 
						|
void *QueueCAR(Queue);
 | 
						|
Queue QueueCDR(Queue);
 | 
						|
void QueueDispose(Queue, DisposeFunction);
 | 
						|
void *QueueFind(Queue, void*, ComparisonFunction);
 | 
						|
void *QueueFindAndRemove(Queue, void*, ComparisonFunction);
 | 
						|
void *QueueFindAndRemoveType(Queue, void*, ComparisonFunction, int);
 | 
						|
void *QueueFindType(Queue, int);
 | 
						|
void *QueueFindTypeAndRemove(Queue, int);
 | 
						|
void *QueueGet(Queue);
 | 
						|
QueueItem QueueHead(Queue);
 | 
						|
void *QueueItemElement(QueueItem);
 | 
						|
int QueueItemType(QueueItem);
 | 
						|
void *QueueLook(Queue);
 | 
						|
Queue QueueNew(void);
 | 
						|
QueueItem QueueNext(QueueItem);
 | 
						|
void QueuePut(Queue, void*, int);
 | 
						|
void QueuePutOnPriority(Queue, void*, int, ComparisonFunction);
 | 
						|
QueueItem QueueSeek(Queue,int);
 | 
						|
int QueueSize(Queue);
 | 
						|
QueueItem QueueTail(Queue);
 | 
						|
#else
 | 
						|
void QueueApply();
 | 
						|
void QueueApply1();
 | 
						|
void QueueApply2();
 | 
						|
void QueueApply3();
 | 
						|
void *QueueCAR();
 | 
						|
Queue QueueCDR();
 | 
						|
void QueueDispose();
 | 
						|
void *QueueFind();
 | 
						|
void *QueueFindAndRemove();
 | 
						|
void *QueueFindAndRemoveType();
 | 
						|
void *QueueFindType();
 | 
						|
void *QueueFindTypeAndRemove();
 | 
						|
void *QueueGet();
 | 
						|
QueueItem QueueHead();
 | 
						|
void *QueueItemElement();
 | 
						|
int QueueItemType();
 | 
						|
void *QueueLook();
 | 
						|
Queue QueueNew();
 | 
						|
QueueItem QueueNext();
 | 
						|
void QueuePut();
 | 
						|
void QueuePutOnPriority();
 | 
						|
QueueItem QueueSeek();
 | 
						|
int QueueSize();
 | 
						|
QueueItem QueueTail();
 | 
						|
#endif /* __ANSI_C__ */
 | 
						|
 | 
						|
#endif /* QUEUE_H */
 |