cerca
Algoritmi e strutture dati - Specifiche: Code
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

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]]