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

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.AlSp-Pile 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: Pile:)
Changed lines 41-42 from:
Si condidera una lista bidirezionale circolare con sentinella
to:
Changed line 26 from:
* %color=#4169E1%'''creapila() = P' '''%%\\
to:
* %color=#4169E1%'''creapila() = ''P' '' '''%%\\
Changed lines 52-53 from:
pila P;
to:
pila P;@]
Added lines 1-102:
(: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%Pile

----

!!!Sintassi

* '''creapila: %color=#4169E1%() -> pila'''\\
''Crea ed inizializza una pila alla sequenza vuota.''
* '''pilavuota: %color=#4169E1%(pila) -> booleano'''\\
''Restituisce vero o falso a seconda che la pila sia vuota o no.''
* '''leggipila: %color=#4169E1%(pila) -> tipoelem'''\\
''Legge il valore dell'elemento in testa alla pila.''
* '''fuoripila: %color=#4169E1%(pila) -> pila'''\\
''Elimina l'elemento che si trova in testa alla pila.''
* '''inpila: %color=#4169E1%(tipoelem, pila) -> pila'''\\
''Aggiunge un elemento in testa alla pila.''

!!!Semantica

* %color=#4169E1%'''creapila() = P' '''%%\\
'''Post:''' P' = Λ
* %color=#4169E1%'''pilavuota(''P'') = b'''%%\\
'''Post:''' b = vero, se P = Λ; b = falso altrimenti
* %color=#4169E1%'''leggipila(''P'') = ''a'' '''%%\\
'''Pre:''' ''P'' = a'_1_', a'_2_', ... , a'_n_' con n≥1\\
'''Post:''' ''a'' = ''a'_1_' ''
* %color=#4169E1%'''fuoripila(''P'') = ''P' '' '''%%\\
'''Pre:''' ''P'' = a'_1_', a'_2_', ... , a'_n_' con n≥1\\
'''Post:''' ''P' '' = a'_2_', a'_3_', ... , a'_n_' se n>1, ''P' ''= Λ se n=1
* %color=#4169E1%'''inpila(''a'', ''P'') = ''P' '' '''%%\\
'''Pre:''' ''P'' = a'_1_', a'_2_', ... , a'_n_' con n≥0\\
'''Post:''' ''P' '' = a, a'_1_', a'_2_', ... , a'_n_'

!!!Implementazione in C++
Si condidera una lista bidirezionale circolare con sentinella

!!!!!Realizzazione con vettore
[@
#define MAXL 100

typedef struct _pila {
int testa;
tipoelem elementi[MAXL];
} pila;

pila P;

* %color=#4169E1%'''creapila''': \\
[@

void creapila (pila *P) {
P->testa = 0;
}
@]

* %color=#4169E1%'''pilavuota''': \\
[@

boolean pilavuota (pila *P) {
return (P->testa == 0;
}
@]

* %color=#4169E1%'''leggipila''': \\
[@

tipoelem pilavuota (pila *P) {
if( !pilavuota(P))
return (P->elementi[P->testa-1]);
}
@]

* %color=#4169E1%'''fuoripila''': \\
[@

void fuoripila (pila *P) {
if( !pilavuota(P))
P->testa--;
}
@]

* %color=#4169E1%'''inpila''': \\
[@

tipoelem inpila (tipoelem a, pila *P) {
if( P->testa == MAXL)
printf("Pila piena\n");
else {
P->elementi[P->testa] = a;
P->testa++;
}
}
@]

----
[[Torna alla pagina di Algoritmi e strutture dati->Uni.Algoritmi]]