Programmazione di calcolatori
This presentation is the property of its rightful owner.
Sponsored Links
1 / 40

Programmazione di Calcolatori PowerPoint PPT Presentation


  • 61 Views
  • Uploaded on
  • Presentation posted in: General

Programmazione di Calcolatori. Lezione XXIV: gli stack e le liste di variabili strutturate. Stack di interi e liste di record. Graficamente:. struct stoi_item{ ……. struct stoi_item *successivo; };. …. …. …. …. …. stoi *stack. NULL. Stack di interi: definizione dei tipi.

Download Presentation

Programmazione di Calcolatori

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Programmazione di calcolatori

Programmazione di Calcolatori

Lezione XXIV:

gli stack e le

liste di variabili strutturate

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Stack di interi e liste di record

Stack di interi e liste di record

  • Graficamente:

struct stoi_item{

…….

struct stoi_item *successivo;

};

stoi *stack

NULL

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Stack di interi definizione dei tipi

Stack di interi: definizione dei tipi

// definizione del tipo strutturato elemento dello

// stack di interi

struct stoi_item{

// valore dell'elemento

int valore;

// riferimento al prossimo elemento

struct stoi_item *successivo;

};

// definizione del tipo di una lista di interi

typedef struct stoi_item * stoi;

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Initstack

InitStack()

  • La logica:

stoi stack

NULL

  • La funzione:

//inizializza uno stack di interi a stack vuoto

void stoiIni (stoi *stack)

{

// inizializza lo stack a stack vuoto

*stack = NULL;

};

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Generazione di un nuovo elemento

Generazione di un nuovo elemento

  • La logica:

VALORE

NULL

  • La funzione:

//alloca memoria e inizializza un nuovo elemento dello stack

structstoi_item*stoiItemIni(int valore)

{

// definisce un puntatore per il nuovo elemento dello stack

structstoi_item *new_item;

// alloca memoria per il nuovo elemento

new_item = (structstoi_item *) malloc(sizeof(structstoi_item));

// se l’operazione ha esito positivo

if (new_item != NULL)

{

// inizializza opportunamente i campi valore e successivo

new_item -> valore = valore;

new_item -> successivo = NULL;

};

// restituisce il riferimento al nuovo elemento, se l’allocazione

// di memoria ha avuto esito positivo; NULL altrimenti

return(new_item);

};

struct stoi_item *new_item

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Programmazione di calcolatori

Push()

  • La logica:

stoi stack

X

NULL

(1)

(2)

NULL

struct stoi_item *new_item

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Programmazione di calcolatori

Push()

  • La funzione:

// Costanti simboliche per gli esiti di una operazione

#define NEG_RESULT 0

#define POS_RESULT1

//aggiunge un nuovo valore sullo stack

int push(stoi *stack, int valore)

{

// definisce un puntatore al nuovo elemento

struct stoi_item *new_item;

// inizializza il nuovo elemento

new_item = stoiItemIni(valore);

// se la generazione del nuovo elemento fallisce termina con esito

// negativo

if (new_item == NULL)

return(NEG_RESULT);

// altrimenti inserisce il nuovo elemento sullo stack

new_item -> successivo = *stack;

*stack = new_item;

// termina con esito positivo

return(POS_RESULT);

};

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Programmazione di calcolatori

Pop()

  • La logica:

(2)

X

X

stoi stack

(3)

NULL

valore

(1)

struct stoi_item *temp

int val

valore

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Programmazione di calcolatori

Pop()

  • La funzione:

//restituisce ed elimina l’ultimo valore inserito sullo stack

int pop(stoi *stack, int *val)

{

// definisce una variabile di appoggio per la testa dello stack

struct stoi_item *temp;

// se lo stack e' vuoto termina con esito negativo

if (stoiEmpty(*stack))

return(NEG_RESULT);

// altrimenti memorizza nella variabile riferita dal parametro val il valore

// sulla testa dello stack

*val = (*stack) -> valore;

// estrae la testa dallo stack e recupera la memoria per questo allocata

temp = *stack;

*stack = (*stack) -> successivo;

free(temp);

// termina con esito positivo

return(POS_RESULT);

}

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Programmazione di calcolatori

Top()

  • La logica:

valore

stoi *stack

NULL

  • La funzione:

valore

//restituisce l’ultimo valore inserito sullo stack

int top(stoi stack, int *val)

{

// se lo stack e' vuoto termina con esito negativo

if (stoiEmpty(stack))

return(NEG_RESULT);

// altrimenti memorizza nella variabile riferita dal parametro val il valore

// sulla testa dello stack

*val = stack -> valore;

// termina con esito positivo

return(POS_RESULT);

};

int val

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi

Gestione di uno Stack di interi

  • Specifiche:

    • implementare una soluzione per il tipo di dato astratto stack di interi che preveda le seguenti operazioni:

    • inizializzazione

    • Push()

    • Top()

    • Pop()

    • visualizzazione del contenuto

    • test di stack vuoto

    • reset

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Organizzazione del codice file e loro contenuto

Organizzazione del codice: file e loro contenuto

  • Definizione dei tipi:

  • stoi_tipi.h:definizioni dei tipi, strutturati e non, utilizzati nella implementazione del tipo di dato astratto “stackofinteger” (stoi)

  • Codice sorgente:

  • stoi_main.c: codice per l’attivazione delle operazioni implementate per il tipo di dato astratto stoi

  • stoi_ges.c:definizione delle funzioni che implementano le operazioni definite sul tipo di dato astratto stoi

  • stoi_uti.c: definizione delle utilities di supporto alle funzioni che implementano le operazioni definite sul tipo di dato astratto stoi

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Organizzazione del codice file e loro contenuto1

Organizzazione del codice: file e loro contenuto

  • Dichiarazioni extern

  • stoi_ges.h:dichiarazioni extern delle funzioni che implementano le operazioni definite sul tipo di dato astratto stoi

  • stoi_uti.h: dichiarazioni extern delle utilities di supporto alle funzioni che implementano le operazioni definite sul tipo di dato astratto stoi

  • Pseudodichiarazioni:

  • stoi_const.h:pseudodichiarazioni per le costanti simboliche utilizzate nella implementazione del tipo di dato astratto stoi

  • stoi_msg.h:pseudodichiarazioni per i messaggi restituiti nella implementazione del tipo di dato astratto stoi

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi tipi h

Gestione di uno Stack di interi: file stoi_tipi.h

//Nome e posizione del file:

//Lezione_XXIV/stoi_tipi.h

//Descrizione del contenuto del file:

// definizioni dei tipi, strutturati e non, utilizzati nella

//implementazione del tipo di dato astratto “stack of integer”

//tramite una lista di variabili strutturate

// definizione del tipo strutturato elemento dello stack di interi

struct stoi_item{

// valore dell'elemento

int valore;

// riferimento al prossimo elemento

struct stoi_item *successivo;

};

// definizione del tipo stack di interi

typedef struct stoi_item *stoi;

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c

Gestione di uno Stack di interi: file stoi_ges.c

// Nome e posizione del file:

//Lezione_XXIV/stoi_ges.c

//Descrizione del contenuto del file:

//definizione delle funzioni che implementano le operazioni definite

//sul tipo di dato astratto "stack of integer"

// PSEUDODICHIARAZIONI

// pseudodichiarazioni per i messaggi restituiti nella implementazione del

// tipo di dato astratto "stack of integer"

#include "./stoi_msg.h"

// pseudodichiarazioni per le costanti simboliche utilizzate nella

// implementazione del tipo di dato astratto "stack of integer"

#include "./stoi_const.h"

// DEFINIZIONI DI TIPO

// definizioni dei tipi, strutturati e non, utilizzati nella implementazione del tipo

// di dato astratto “stack of integer” tramite una lista di variabili strutturate

#include "./stoi_tipi.h"

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c1

Gestione di uno Stack di interi: file stoi_ges.c

// DICHIARAZIONI EXTERN

// inclusione del file di intestazione della libreria standard

// che contiene definizioni di macro, costanti e dichiarazioni di

// funzioni e tipi funzionali alle varie operazioni di I/O

#include <stdio.h>

// inclusione del file di intestazione della libreria che contiene

// definizioni di macro, costanti e dichiarazioni di funzioni e tipi di

// interesse generale

#include <stdlib.h>

// dichiarazioni extern delle utilities di supporto alle funzioni che

// implementano le operazioni definite sul tipo di dato astratto

//“stack of integer”

#include "./stoi_uti.h“

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c2

Gestione di uno Stack di interi: file stoi_ges.c

// Nome della funzione:

//stoiEmpty()

// Tipo, nome e significato dei parametri della funzione:

//stoi stack: riferimento alla testa dello stack

//Descrizione della funzionalita' implementata:

//implementa il test di stack vuoto

// Tipo e significato del valore restituito:

//int: TRUE se la lista è vuota;

//FALSE altrimenti

int stoiEmpty(stoi stack)

{

// restituisce TRUE se lo stack è vuoto, FALSE altrimenti

if (stack == NULL)

return(TRUE);

else

return(FALSE);

};

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c3

Gestione di uno Stack di interi: file stoi_ges.c

//Nome della funzione:

//push()

// Tipo, nome e significato dei parametri della funzione:

//stoi *stack:riferimento al puntatore di accesso allo stack di interi

// int valore: valore da inserire sullo stack

//Descrizione della funzionalita' implementata:

// inserisce sullo stack un elemento per il valore

// Tipo e significato del valore restituito:

// int: POS_RESULT se l'operazione ha avuto esito positivo;

// NEG_RESULT altrimenti

int push(stoi *stack, int valore)

{

// definisce un puntatore al nuovo elemento

struct stoi_item *new_item;

// inizializza il nuovo elemento

new_item = stoiItemIni(valore);

// se la generazione del nuovo elemento fallisce termina con esito negativo

if (new_item == NULL)

return(NEG_RESULT);

// altrimenti inserisce il nuovo elemento sullo stack

new_item -> successivo = *stack;

*stack = new_item;

// termina con esito positivo

return(POS_RESULT);

};

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c4

Gestione di uno Stack di interi: file stoi_ges.c

//Nome della funzione:

//stoiVis()

// Tipo, nome e significato dei parametri della funzione:

//stoi stack:riferimento all'ultimo elemento inserito nello stack

//Descrizione della funzionalita' implementata:

//visualizza gli interi memorizzati nello stack, in ordine

//inverso rispetto a quello di inserimento.

// Tipo e significato del valore restituito:

//alcuno

void stoiVis (stoi stack)

{

// se la lista è vuota visualizza un opportuno messaggio

if (stoiEmpty(stack))

printf(EMPTY_STOI);

// altrimenti

else

// scandisce la lista

while (stack != NULL)

{

// visualizza il contenuto dell'elemento corrente

printf(" <- %d", stack -> valore);

// considera l'elemento successivo a quello corrente

stack = stack -> successivo;

};

};

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c5

Gestione di uno Stack di interi: file stoi_ges.c

//Nome della funzione:

//top()

// Tipo, nome e significato dei parametri della funzione:

//stoi stack:riferimento alla testa dello stack

//int *val:riferimento alla variabile nella quale memorizzare

//il valore sulla testa dello stack

//Descrizione della funzionalita' implementata:

//se lo stack non e' vuoto, accede al valore memorizzato dalla testa,

//lo memorizza nella variabile riferita dal parametro e termina con

//successo. Altrimenti, termina con esito negativo.

// Tipo e significato del valore restituito:

//int:POS_RESULT se lo stack non e' vuoto;

//NEG_RESULT altrimenti

int top(stoi stack, int *val)

{

// se lo stack e' vuoto restituisce esito negativo

if (stoiEmpty(stack))

return(NEG_RESULT);

// altrimenti memorizza nella variabile riferita dal parametro val

// il valore sulla testa dello stack

*val = stack-> valore;

// termina con esito positivo

return(POS_RESULT);

}

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c6

Gestione di uno Stack di interi: file stoi_ges.c

//Nome della funzione:

//pop()

// Tipo, nome e significato dei parametri della funzione:

//stoi *stack: riferimento alla testa dello stack

//int *val:riferimento alla variabile nella quale memorizzare

// il valore sulla testa dello stack

//Descrizione della funzionalita' implementata:

//se lo stack non e' vuoto, accede al valore memorizzato dalla testa

//e lo memorizza nella variabile riferita dal parametro; estrae la

//testa dallo stack recuperando la memoria per questo allocata, e

//termina con successo. Termina con esito negativo, altrimenti.

// Tipo e significato del valore restituito:

//int:POS_RESULT se lo stack non e' vuoto.

// NEG_RESULT altrimenti

int pop(stoi *stack, int *val)

{

// definisce una variabile di appoggio per la testa dello stack

struct stoi_item *temp;

// se lo stack e' vuoto termina con esito negativo

if (stoiEmpty(*stack))

return(NEG_RESULT);

// altrimenti memorizza nella variabile riferita dal parametro val

// il valore sulla testa dello stack

*val = (*stack) -> valore;

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c7

Gestione di uno Stack di interi: file stoi_ges.c

// estrae la testa dallo stack e recupera la memoria per questo allocata

temp = *stack;

*stack = (*stack) -> successivo;

free(temp);

// termina con esito positivo

return(POS_RESULT);

}

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c8

Gestione di uno Stack di interi: file stoi_ges.c

//Nome della funzione:

//stoiReset()

// Tipo, nome e significato dei parametri della funzione:

//stoi *stack:riferimento al puntatore alla testa dello stack

//Descrizione della funzionalita' implementata:

//azzera lo stack recuperando tutta la memoria allocata per i

//suoi elementi

// Tipo e significato del valore restituito:

//alcuno

void stoiReset (stoi *stack)

{

// definizione di una variabile intera da utilizzarsi nella

// chiamata della pop()

int valore;

// esegue ripetutamente operazioni di pop() fino ad ottenere

// uno stack vuoto

while (pop(stack, &valore) != NEG_RESULT);

};

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi ges c9

Gestione di uno Stack di interi: file stoi_ges.c

//Nome della funzione:

//stoiInit()

// Tipo, nome e significato dei parametri della funzione:

//stoi *stack: riferimento al puntatore alla testa dello stack

//Descrizione della funzionalita' implementata:

//inizializza uno stack di interi a stack vuoto

// Tipo e significato del valore restituito:

//alcuno

void stoiInit (stoi *stack)

{

// inizializza lo stack a stack vuoto

*stack = NULL;

};

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di un stack di interi file stoi ges h

Gestione di un Stack di interi: file stoi_ges.h

//Nome e posizione del file:

//Lezione_XXIV/stoi_ges.h

//Descrizione del contenuto del file:

// contiene le dichiarazioni extern delle funzioni che implementano le

//operazioni definite sul tipo di dato astratto “stack of integer”

extern int stoiEmpty(stoi);

extern int push(stoi *, int);

extern void stoiVis(stoi);

extern int top(stoi, int *);

extern int pop(stoi *, int *);

extern void stoiReset (stoi *);

extern void stoiInit(stoi *);

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi uti c

Gestione di uno Stack di interi: file stoi_uti.c

// Nome e posizione del file:

//Lezione_XXIV/stoi_uti.c

//Descrizione del contenuto del file:

//definizione delle utilities di supporto alle funzioni che implementano le

//operazioni definite sul tipo di dato astratto “stack of integer”

// DEFINIZIONI DI TIPO

// definizioni dei tipi, strutturati e non, utilizzati nella implementazione del tipo

// di dato astratto “stack of integer” tramite una lista di variabili strutturate

#include "./stoi_tipi.h"

// DICHIARAZIONI EXTERN

// inclusione del file di intestazione della libreria

// standard che contiene definizioni di macro,

// costanti e dichiarazioni di funzioni e tipi funzionali

// alle varie operazioni di I/O

#include <stdio.h>

// inclusione del file di intestazione della libreria che contiene

// definizioni di macro, costanti e dichiarazioni di funzioni e tipi

// di interesse generale

#include <stdlib.h>

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi uti c1

Gestione di uno Stack di interi: file stoi_uti.c

//Nome della funzione:

//stoiItemIni()

// Tipo, nome e significato dei parametri della funzione:

//int valore: intero memorizzato dal nuovo elemento dello stack

//Descrizione della funzionalita' implementata:

//alloca memoria per un nuovo elemento di uno stack di interi e lo

//inizializza con il valore del parametro

// Tipo e significato del valore restituito:

//struct stoi_item *:riferimento ad un nuovo elemento di uno stack di

//interi, se la sua allocazione ha esito positivo;

//NULL altrimenti

struct stoi_item *stoiItemIni(int valore)

{

// definisce un puntatore per il nuovo elemento dello stack

struct stoi_item *new_item;

// alloca memoria per il nuovo elemento

new_item = (struct stoi_item *) malloc(sizeof(struct stoi_item));

// se l’operazione ha esito positivo

if (new_item != NULL)

{

// inizializza opportunamente i campi valore e successivo

new_item -> valore = valore;

new_item -> successivo = NULL;

};

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi uti c2

Gestione di uno Stack di interi: file stoi_uti.c

// restituisce il riferimento al nuovo elemento, se la sua allocazione

// di memoria ha avuto esito positivo, NULL altrimenti

return(new_item);

};

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi uti h

Gestione di uno Stack di interi: file stoi_uti.h

//Nome e posizione del file:

//Lezione_XXIV/stoi_uti.h

//Descrizione del contenuto del file:

// contiene le dichiarazioni extern delle utilities di supporto alle

//funzioni che implementano le operazioni definite sul tipo di

//dato astratto “stack of integer”

extern struct stoi_item *stoiItemIni(int);

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi main c

Gestione di uno Stack di interi: file stoi_main.c

//Nome e posizione del file:

//Lezione_XXIV/stoi_main.c

//Descrizione del contenuto del file:

//codice per l’attivazione delle funzionalità di gestione dello stack

//di interi

// PSEUDODICHIARAZIONI

// pseudodichiarazioni per i messaggi restituiti nella implementazione del

// tipo di dato astratto "stack of integer"

#include "./stoi_msg.h"

// pseudodichiarazioni per le costanti simboliche utilizzate nella

// implementazione del tipo di dato astratto "stack of integer"

#include "./stoi_const.h"

// DEFINIZIONI DI TIPO

// definizioni dei tipi, strutturati e non, utilizzati nella implementazione del tipo

// di dato astratto “stack of integer” tramite una lista di variabili strutturate

#include "./stoi_tipi.h"

// DICHIARAZIONE EXTERN

// inclusione del file di intestazione della libreria

// standard che contiene definizioni di macro,

// costanti e dichiarazioni di funzioni e tipi funzionali

// alle varie operazioni di I/O

#include <stdio.h>

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi main c1

Gestione di uno Stack di interi: file stoi_main.c

// dichiarazioni extern delle utilities di supporto alle funzioni che implementano

// le operazioni definite sul tipo di dato astratto

//“stack of integer”

#include "./stoi_uti.h“

// dichiarazioni extern delle funzioni che implementano le operazioni

// definite sul tipo di dato astratto stoi

#include "./stoi_ges.h"

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi main c2

Gestione di uno Stack di interi: file stoi_main.c

// Nome della funzione:

//StoiMenu()

// Tipo, nome e significato dei parametri della funzione:

//stck *stack: riferimento al puntatore alla testa dello stack di interi

//Descrizione della funzionalita' implementata:

//implementa il menu di scelta per le operazioni definite sul tipo di

//dato astratto “stack of integer”

//Tipo e significato del valore restituito:

//alcuno

void stoiMenu(stoi *stack)

{

// definisce e inizializza la variabile che permette l'uscita dal programma

int quit = 0;

// definisce una variabile per i valori oggetto della push()

// e per il risultato della top() e della pop()

int valore;

Continua …

Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


Gestione di uno stack di interi file stoi main c3

Gestione di uno Stack di interi: file stoi_main.c

  • // visualizza le possibili scelte

  • printf(SELECT_FUN_STOI);

  • printf(PUSH); printf(TOP); printf(POP);

  • printf(RESET_LOI); printf(DISPLAY_STOI);

  • printf(EMPTY_STOI_TEST);

  • printf(LEAVE_MAN_STOI);

  • printf(SELECT_OP_STOI);

  • // acquisisce la scelta

  • scanf("%d", &selezione);

  • // discrimina tra le diverse scelte

  • switch (selezione)

  • {

  • case 1: // Push()

  • // acquisisce il valore oggetto della Push()

  • printf(ITEM_VALUE_REQ);

  • scanf("%d", &valore);

  • // chiama la funzione che implementa l’operazione Push(),

  • // testa l'esito dell'operazione e lo visualizza

    • if (push(stack, valore) == POS_RESULT)

      • printf(POS_RES_MSG);

  • else

  • {

  • printf(NEG_RES_MSG);

  • printf(ITEM_GEN_FAILED);

  • };

  • break;

  • Continua …

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


    Gestione di uno stack di interi file stoi main c4

    Gestione di uno Stack di interi: file stoi_main.c

    • case 2: // Top()

    • // chiama la funzione che implementa l'operazione Top()

    • // valuta l'esito dell'operazione e lo visualizza. Se l'esito e‘

    • // positivo visualizza il valore sulla testa dello stack

      • if (top(*stack, &valore) == POS_RESULT)

      • printf("\nTop(): %d\n", valore);

  • else

  • printf(POP_FAILED);

  • break;

  • case 3: // Pop()

  • // chiama la funzione che implementa l'operazione Pop()

  • // valuta l'esito dell'operazione e lo visualizza. Se l'esito e'

  • // positivo visualizza il valore sulla testa dello stack

  • if (pop(stack, &valore) == POS_RESULT)

  • printf("\nPop(): %d\n", valore);

  • else

  • printf(TOP_FAILED);

  • break;

  • case 4: // reset dello stack

  • // chiama la funziona che azzera lo stack

  • stoiReset(stack);

  • break;

  • Continua …

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


    Gestione di uno stack di interi file stoi main c5

    Gestione di uno Stack di interi: file stoi_main.c

    case 5: // visualizzazione del contenuto dello stack

    // chiama la funzione che visualizza il contenuto dello stack

    stoiVis(*stack);

    break;

    case 6: // test di stack vuoto

    // chiama la funzione che testa se lo stack e’ vuoto e visualizza

    // il risultato del test

    if (stoiEmpty(*stack))

    printf(EMPTY_STOI);

    else

    printf(NOT_EMPTY_STOI);

    break;

    case 7: // uscita

    quit = 1;

    break;

    default: // selezione errata

    printf(WRONG_SELECTION);

    };

    };

    };

    Continua …

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


    Gestione di uno stack di interi file stoi main c6

    Gestione di uno Stack di interi: file stoi_main.c

    //Nome della funzione:

    //main()

    // Tipo, nome e significato dei parametri della funzione:

    //alcuno

    //Descrizione della funzionalita' implementata:

    //chiamante

    // Tipo e significato del valore restituito:

    //alcuno

    int main()

    {

    // definisce il puntatore di accesso allo stack di interi;

    stoi stack;

    // inizializza lo stack

    stoiInit(&stack);

    // chiama la funzione che implementa il menu di scelta

    // delle funzionalita' di gestione dello stack di interi

    stoiMenu(&stack);

    // recupera la memoria allocata per lo stack

    stoiReset(&stack);

    return(0);

    };

    Continua …

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


    Gestione di uno stack di interi file stoi const h

    Gestione di uno Stack di interi: file stoi_const.h

    //Nome e posizione del file:

    //Lezione_XXIV/stoi_const.h

    //Descrizione del contenuto del file:

    // pseudodichiarazioni per le costanti simboliche utilizzate nella

    //implementazione del tipo di dato astratto "stack of integer“

    // definizione delle costanti simboliche per gli esiti di una operazione

    #define NEG_RESULT 0

    #define POS_RESULT 1

    // definizione delle costanti mnemoniche per gli esiti di un test

    #define TRUE 1

    #define FALSE 0

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


    Gestione di uno stack di interi file stoi msg h

    Gestione di uno Stack di interi: file stoi_msg.h

    //Nome e posizione del file:

    //Lezione_XXIV/stoi_msg.h

    //Descrizione del contenuto del file:

    //pseudodichiarazioni per i messaggi restituiti nella implementazione del

    //tipo di dato astratto "stack of integer"

    // definizione delle costanti simboliche per i messaggi utilizzati per il menu

    #define SELECT_FUN_STOI "\nSelezionare Funzionalita'\n"

    #define PUSH "\n1: Push()"

    #define TOP "\n2: Top()"

    #define POP "\n3: Pop()"

    #define RESET_LOI "\n4: Azzera lo stack"

    #define DISPLAY_STOI "\n5: Visualizza lo stack"

    #define EMPTY_STOI_TEST "\n6: Test di stack vuoto"

    #define LEAVE_MAN_STOI "\n7: Interrompi"

    #define SELECT_OP_STOI "\n\nSelezione: "

    #define WRONG_SELECTION "\nSelezionare 1, 2, 3, 4, 5, 6 o 7"

    // definizione delle costanti simboliche per i messaggi di descrizione

    // per l'esito delle operazioni

    #define ITEM_GEN_FAILED "\nGenerazione del nuovo elemento fallita"

    #define POP_FAILED "\nPop()fallita: stack vuoto\n"

    #define TOP_FAILED "\nTop()fallita: stack vuoto\n"

    // definizione delle costanti simboliche per i messaggi descrittivi dello stack

    #define EMPTY_STOI "\nStack vuoto\n"

    #define NOT_EMPTY_STOI "\nStack non vuoto\n"

    #define STOI "\nStack:

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


    Gestione di uno stack di interi file stoi msg h1

    Gestione di uno Stack di interi: file stoi_msg.h

    // definizione delle costanti simboliche per i messaggi per l'esito delle

    // operazioni

    #define NEG_RES_MSG "\nOperazione fallita\n"

    #define POS_RES_MSG "\nOperazione terminata con successo\n"

    // definizione delle costanti simboliche per i messaggi per l'acquisizione di

    // dati

    #define ITEM_VALUE_REQ "\nPush(?): "

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


    Grafo delle chiamate

    Grafo delle chiamate

    stoiInit()

    ./stoi_ges.c

    main()

    ./stoi_main.c

    stoiReset()

    ./stoi_ges.c

    stoiMenu()

    ./stoi_main.c

    stoiVis()

    ./stoi_ges.c

    push()

    ./stoi_ges.c

    stoiEmpty()

    ./stoi_ges.c

    top()

    ./stoi_ges.c

    pop()

    ./stoi_ges.c

    stoiItemIni()

    ./stoi_uti.c

    Programmazione di Calcolatori: gli stack e le liste di variabili strutturate


  • Login