#ifndef LIFO #define LIFO // opaque type for a queue object typedef struct lrec * lifo; // returns a new queue object lifo Lnew(); // add an item to the queue int Ladd(lifo, void *data); // remove an item from the queue void * Lremove(lifo); // return the head item of the queue void * Lshow(lifo); // move the head item to the tail of the queue // and return the new head item int Lfree(lifo); #define ENOMEM 1 // not enough memory to complete the operation #define EBADL 2 // argument is not a queue #define ENODATA 3 // no data is available #define EUNKNOWN 4 // any other error #endif