codice:/* listaPtr1c.h ---------------- file delle intestazioni di una libreria per la gestione di liste di numeri reali rappresentate con record e puntatori Nota: la libreria e' stata scritta esclusivamente a scopo didattico */ //COSTANTI GLOBALI: //----------------- #define TRUE 1 #define FALSE 0 typedef int boolean; struct prodotto { char codice[10]; char marca[20]; char descrizione[20]; int quantita; }; typedef struct prodotto tipoValori; struct selemento { tipoValori valore; struct selemento* next; }; typedef struct selemento elemento; typedef elemento* lista; //PROCEDURE: //---------- void inizializza (lista* plista); //--> inizializza la lista l alla lista vuota //lista* plista --> la lista void leggi (lista* plista); //--> effettua la lettura dei valori della lista l dalla tastiera //lista* plista --> la lista void leggiValore(tipoValori* valore); //--> effettua la lettura di un valore della lista l dalla tastiera //tipoValori* valore --> il valore void stampa (lista l); //--> effettua la stampa dei valori della lista l sullo schermo //lista l --> la lista void stampaValore (tipoValori valore); //--> effettua la stampa di un valore della lista l sullo schermo //tipoValori valore --> il valore void salva (lista l, char* nomeFile); //--> salva i valori della lista l in un file //lista l --> la lista //string nomeFile --> il nome del file void salvaValore(FILE* outFile, tipoValori valore); //--> salva un valore della lista l su file //tipoValori valore --> il valore void carica (lista* plista, char* nomeFile); //--> carica i valori della lista l da un file //lista* plista --> la lista //string nomeFile --> il nome del file boolean caricaValore(FILE* inFile, lista* plista); //--> carica un valore della lista l da file //tipoValori valore --> il valore void aggiungiInCoda (lista* plista, tipoValori elem); //--> aggiunge "elem" in coda ai valori della lista l se // questo e' possibile; "esito" segnala la riuscita // dell'operazione //lista* plista --> la lista //float elem --> elemento da aggiungere void aggiungiInPosizione (lista* plista, tipoValori elem, int pos); //--> aggiunge "elem" ai valori della lista l in posizione pos se // questo e' possibile; "esito" segnala la riuscita // dell'operazione //lista* plista --> la lista //float elem --> elemento da aggiungere //int pos --> posizione in cui aggiungere void eliminaInCoda (lista* plista); //--> elimina l'elemento in coda alla lista l se // questo e' possibile; "esito" segnala la riuscita // dell'operazione //lista* plista --> la lista void eliminaInPosizione (lista* plista, int pos); //--> elimina un elemento in posizione "pos" dalla lista l se // questo e' possibile; "esito" segnala la riuscita // dell'operazione //lista* plista --> la lista //int pos --> posizione in cui aggiungere //FUNZIONI: //--------- int numeroElementi (lista l); //--> restitituisce il numero di elementi della lista l //lista l --> la lista tipoValori elementoInPosizione (lista l, int pos); //--> restituisce l'elemento in posizione pos //lista l --> la lista //int pos --> elemento da cercare //NOTA: si assume che pos sia minore del numero di elementi // della lista, altrimenti si genera un errore boolean confronta(tipoValori val1, tipoValori val2); int cercaPosizione (lista l, tipoValori elem); //--> se "elem" e' contenuto nella lista l ne restituisce // la posizione; -1 altrimenti; nel caso l'insieme // "ins" contenga piu' occorrenze di "elem", viene // restituita la posizione della prima occorrenza //lista l --> la lista //float elem --> elemento da cercare boolean listaVuota (lista l); //--> restituisce true se la lista e' priva di elementi //lista l --> la lista boolean listaPiena (lista l); //--> restituisce true se la lista e' completamente piena //lista l --> la lista