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