Uni.AlSp-Pile History
Show minor edits - Show changes to output
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:
* %color=#4169E1%'''creapila() = P' '''%%\\
to:
* %color=#4169E1%'''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->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]]
[[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]]