/* Fifo Funktionen */ /* Datei: fifo.c */ #include #include "fifo.h" /* Initialisieren */ void FifoInit(FifoKopf *fp) { fp->first = fp->last = NULL; fp->anzahl = 0; } /* FiFo - Einhängen am Ende */ void FifoEin (FifoKopf *fp, void *tp) { Elever * tmp1; fp->anzahl++; if (fp->first == NULL) { ((Elever *) tp)->ep = NULL; fp->first = (Elever *) tp; fp->last = (Elever *) tp; } else { tmp1 = fp->last; /* Zeige auf letztes E. */ tmp1->ep = (Elever *) tp; /* im bisher letzten */ ((Elever *) tp)->ep = NULL; /* Kein Verweis mehr */ fp->last = (Elever *) tp; /* neues Letztes */ } } /* FiFo - Aushängen am Kopf */ void * FifoAus (FifoKopf *fp) { Elever * tmp1; tmp1 = fp->first; /* altes erstes E. */ if (tmp1 != NULL) { fp->first = tmp1->ep; (fp->anzahl)--; } return tmp1; }