Simple method to implement a FIFO (first-in-First-out) Use an array to hold the data. A head, and tail index is used manages the FIFO. If the FIFO get overrun, then the oldest element (FI) get deleted. Maximum number of elements the FIFO can hold is is size_of_array-1 head points to the next "free" space. tail points to the end of queue (last item). Unless, tail==head, then queue is empty. 0. Initialize head = tail = 0; N = number of array elements . 2. n - caculate the number of items in the array if( head < tail ) n = N - (tail-head) else n = (head-tail) 1. add data to FIFO copy to head inc(head) if( tail== head ) // FIFO is being overrun. inc(tail) 3. remove data if( head==tail) error FIFO is empty. copy tail inc(tail) 4. inc( x, N) - increment head, tail. if( x >= N-1 ) x = 0; else x++;