Uni.AlSp-Pile History
Hide minor edits - Show changes to markup
October 19, 2007, at 03:36 PM
by
- Changed line 1 from:
(:title Algoritmi e strutture dati - Specifiche:)
to:
(:title Algoritmi e strutture dati - Specifiche: Pile:)
October 19, 2007, at 02:21 PM
by
- Changed lines 41-42 from:
Si condidera una lista bidirezionale circolare con sentinella
to:
October 19, 2007, at 01:24 PM
by
- Changed line 26 from:
- creapila() = P' \\
to:
- creapila() = P' \\
Changed lines 52-53 from:
pila P;
to:
pila P;@]
October 19, 2007, at 01:23 PM
by
- Added lines 1-102:
(:title Algoritmi e strutture dati - Specifiche:) Torna alla pagina di Algoritmi e strutture dati
:: Algoritmi e strutture dati - Specifiche ::
Pile
Sintassi
- creapila: () -> pila
Crea ed inizializza una pila alla sequenza vuota. - pilavuota: (pila) -> booleano
Restituisce vero o falso a seconda che la pila sia vuota o no. - leggipila: (pila) -> tipoelem
Legge il valore dell'elemento in testa alla pila. - fuoripila: (pila) -> pila
Elimina l'elemento che si trova in testa alla pila. - inpila: (tipoelem, pila) -> pila
Aggiunge un elemento in testa alla pila.
Semantica
- creapila() = P'
Post: P' = Λ - pilavuota(P) = b
Post: b = vero, se P = Λ; b = falso altrimenti - leggipila(P) = a
Pre: P = a1, a2, ... , an con n≥1
Post: a = a1 - fuoripila(P) = P'
Pre: P = a1, a2, ... , an con n≥1
Post: P' = a2, a3, ... , an se n>1, P' = Λ se n=1 - inpila(a, P) = P'
Pre: P = a1, a2, ... , an con n≥0
Post: P' = a, a1, a2, ... , an
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; }
- pilavuota:
boolean pilavuota (pila *P) { return (P->testa == 0; }
- leggipila:
tipoelem pilavuota (pila *P) { if( !pilavuota(P)) return (P->elementi[P->testa-1]); }
- fuoripila:
void fuoripila (pila *P) { if( !pilavuota(P)) P->testa--; }
- inpila:
tipoelem inpila (tipoelem a, pila *P) { if( P->testa == MAXL) printf("Pila piena\n"); else { P->elementi[P->testa] = a; P->testa++; } }