[Usado em Busca em largura, Distâncias, Fluxo máximo]
[Enunciado.] Eis o módulo QUEUE.c, que implementa uma fila (= queue) de vértices em um vetor:
#define vertex int
/* Este módulo implementa uma fila de vértices. A fila reside no segmento queue[begin..end-1] de um vetor queue[0..N-1]. Vamos supor que temos sempre 0 ≤ begin ≤ end ≤ N. (O código abaixo é uma adaptação do programa 4.11 do volume 1 do livro de Sedgewick.) */
static vertex *queue; static int begin, end; void QUEUEinit( int N) { queue = malloc( N * sizeof (vertex)); begin = end = 0; } int QUEUEempty( void) { return begin == end; } void QUEUEput( vertex v) { queue[end++] = v; } vertex QUEUEget( void) { return queue[begin++]; } void QUEUEfree( void) { free( queue); }
Cada uma das funções, exceto QUEUEinit(), consome tempo constante, ou seja, tempo independente de begin, de end e de N.