Estratto del documento

Pile

Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l’inserimento e l’eliminazione di elementi avvengono secondo la regola seguente: l’elemento che viene eliminato tra quelli presenti nella pila deve essere quello che è stato inserito per ultimo. Si parla di gestione LIFO (per "Last In, First Out").

Esempio: rappresentazione grafica di una pila

L’elemento in cima alla pila viene detto elemento affiorante. Una pila senza elementi viene detta pila vuota.

Il tipo pila è un ADT <S,F,C> dove

  • S = {pila, atomo, boolean} pila è il dominio di interesse, atomo è il dominio degli elementi che formano le liste.
  • F = {push, top, empty, pop}

Funzioni

  • push: atomo x pila -> pila inserisce un elemento in cima alla pila
  • top: pila -> atomo ritorna l'elemento in cima alla pila
  • empty: pila -> boolean ritorna il valore vero se la pila è vuota
  • pop: pila -> pila ritorna la pila privata dell'elemento in cima

C = pila vuota, è la costante che denota la coda priva di elementi.

Pile mediante array

Definizione

typedef int TAtomo;
typedef struct StElem {    
    TAtomo *e;    
    int primo, NMax;
} Pila;

Pile

Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l’inserimento e l’eliminazione di elementi avvengono secondo la regola seguente: l’elemento che viene eliminato tra quelli presenti nella pila deve essere quello che è stato inserito per ultimo. Si parla di gestione LIFO (per "Last In, First Out").

Esempio: rappresentazione grafica di una pila

L’elemento in cima alla pila viene detto elemento affiorante. Una pila senza elementi viene detta pila vuota.

Il tipo pila è un ADT <S,F,C> dove

  • S = {pila, atomo, boolean} pila è il dominio di interesse, atomo è il dominio degli elementi che formano le liste.
  • F = {push, top, empty, pop}

Funzioni

  • push: atomo x pila -> pila inserisce un elemento in cima alla pila
  • top: pila -> atomo ritorna l'elemento in cima alla pila
  • empty: pila-> boolean ritorna il valore vero se la pila è vuota
  • pop: pila -> pila ritorna la pila privata dell'elemento in cima

C = pila vuota, è la costante che denota la coda priva di elementi.

Pile mediante array

Definizione

typedef int TAtomo;
typedef struct StElem {
    TAtomo *e;
    int primo, NMax;
} Pila;

Funzioni

int InizializzaPila( Pila *PP, int NElemMax ) {
    PP->e = (TAtomo *) malloc(sizeof(TAtomo) * NElemMax);
    if( PP->e == NULL ) return 0;
    PP->primo = -1;
    return PP->NMax = NElemMax;
}
int empty( Pila P ) {
    return (P.primo == -1);
}
int full( Pila P ) {
    return (P.primo == P.NMax-1);
}
int pop ( Pila *PP ) {
    if( !null(*PP) ) return 0;
    PP->primo--;
    return 1;
}
int push (Pila *PP, TAtomo A ) {
    if( full(*PP)) return 0;
    if( null(*PP)) PP->primo = 0;
    else PP->primo++;
    PP->e[PP->primo] = A;
    return 1;
}
TAtomo top( Pila P ) {
    if( null(P) ) return NULL;
    return P.e[P.primo];
}

Implementazioni concatenate (puntatori)

Anteprima
Vedrai una selezione di 1 pagina su 3
Appunti di informatica sulle Pile Pag. 1
1 su 3
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cb.rr95 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Catania o del prof Malgeri Michele.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community