Algoritmi e strutture dati

Realizzazione in C di una coda con vettore circolare

Si supponga di avere un array di maxlung elementi, indicati da 0 a maxlung-1, dove l’ elemento di indice 0 è considerato come il successore di quello di indice maxlung-1 La coda è quindi contenuta in n posizioni consecutive del vettore, con i rispettivi estremi individuati da due cursori. Per cancellare un elemento viene incrementato di 1 (modulo maxlung) il rispettivo cursore di testa. Per inserire un elemento viene incrementato di 1 (modulo maxlung) il rispettivo cursore di fondo.

Si noti che per individuare la coda all’ interno di un vettore circolare, non occorrono i due cursori, ma sono sufficienti un cursore alla testa e la lunghezza della coda. Per tanto se il cursore testa punta alla posizione i, allora l’ ultimo elemento della coda è in posizione (i+n-1) modulo maxlung. Di seguito vediamo come implementare in linguaggio C gli operatori della coda con vettore circolare. Prima di tutto definiamo la struttura della coda:

Analizziamo ora la funzione CREACODA utilizzata per inizializzare la coda alla sequenza vuota e la funzione CODAVUOTA per verificare che la coda sia vuota. Alle funzioni viene passato un puntatore a struttura di tipo coda.

Inseriamo ora con la funzione INCODA un elemento in fondo alla coda.

Eliminiamo con la funzione FUORICODA un elemento in testa alla coda. Per far questo viene incrementato di 1 (modulo maxlung) il rispettivo cursore di testa e viene diminuita di una unita la lunghezza della coda.

In fine vediamo la funzione LEGGICODA che ci permette di leggere il valore dell’ elemento in testa ad una coda:























































Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.