Uni.AlSp-Code History
Hide minor edits - Show changes to output
Changed line 1 from:
(:title Algoritmi e strutture dati - Specifiche:)
to:
(:title Algoritmi e strutture dati - Specifiche: Code:)
Changed line 13 from:
* '''creapila: %color=#4169E1%() -> coda'''\\
to:
* '''creacoda: %color=#4169E1%() -> coda'''\\
Added lines 1-103:
(:title Algoritmi e strutture dati - Specifiche:) [[Torna alla pagina di Algoritmi e strutture dati->Uni.Algoritmi]] ----
%titolo%''':: Algoritmi e strutture dati - Specifiche ::'''
%center%%bgcolor=#d9e4f2 font-size=11pt padding=4px padding-left=50px padding-right=50px%Code
----
!!!Sintassi
* '''creapila: %color=#4169E1%() -> coda'''\\ ''Crea ed inizializza una coda alla sequenza vuota.'' * '''codavuota: %color=#4169E1%(coda) -> booleano'''\\ ''Restituisce vero o falso a seconda che la coda sia vuota o no.'' * '''leggicoda: %color=#4169E1%(coda) -> tipoelem'''\\ ''Legge il valore dell'elemento in testa alla coda.'' * '''fuoricoda: %color=#4169E1%(coda) -> coda'''\\ ''Elimina l'elemento che si trova in testa alla coda.'' * '''incoda: %color=#4169E1%(tipoelem, coda) -> coda'''\\ ''Aggiunge un elemento in fondo alla coda.''
!!!Semantica
* %color=#4169E1%'''creacoda() = ''Q' '' '''%%\\ '''Post:''' Q' = Λ * %color=#4169E1%'''codavuota(''Q'') = b'''%%\\ '''Post:''' b = vero, se Q = Λ; b = falso altrimenti * %color=#4169E1%'''leggicoda(''Q'') = ''a'' '''%%\\ '''Pre:''' ''Q'' = a'_1_', a'_2_', ... , a'_n_' con n≥1\\ '''Post:''' ''a'' = ''a'_1_' '' * %color=#4169E1%'''fuoricoda(''Q'') = ''Q' '' '''%%\\ '''Pre:''' ''Q'' = a'_1_', a'_2_', ... , a'_n_' con n≥1\\ '''Post:''' ''Q' '' = a'_2_', a'_3_', ... , a'_n_' se n>1, ''Q' ''= Λ se n=1 * %color=#4169E1%'''incoda(''a'', ''Q'') = ''Q' '' '''%%\\ '''Pre:''' ''Q'' = a'_1_', a'_2_', ... , a'_n_' con n≥0\\ '''Post:''' ''Q' '' = a'_1_', a'_2_', ... , a'_n_', a
!!!Implementazione in C++
!!!!!Realizzazione con vettore circolare [@ #define MAXL 100
typedef struct _coda { int testa, lung; tipoelem elementi[MAXL]; } coda;
coda Q;@]
* %color=#4169E1%'''creacoda''': \\ [@
void creacoda (coda *Q) { Q->testa = Q->lung = 0; } @]
* %color=#4169E1%'''codavuota''': \\ [@
boolean codavuota (coda *Q) { return (Q->lung == 0; } @]
* %color=#4169E1%'''leggicoda''': \\ [@
tipoelem codavuota (coda *Q) { if( !codavuota(Q)) return (Q->elementi[Q->testa]); } @]
* %color=#4169E1%'''fuoricoda''': \\ [@
void fuoricoda (coda *Q) { if( !codavuota(Q)) { Q->testa = (Q->testa+1) % MAXL; Q->lung = Q->lung -1; } } @]
* %color=#4169E1%'''incoda''': \\ [@
tipoelem incoda (tipoelem a, coda *Q) { if( Q->lung == MAXL) printf("Coda satura\n"); else { Q->elementi[(Q->testa + Q.lung) % MAXL] = a; Q->lung++; } } @]
---- [[Torna alla pagina di Algoritmi e strutture dati->Uni.Algoritmi]]
|