/*** RAPPRESENTAZIONE DI INSIEME DINAMICI MEDIANTE LISTE =================================================== FORMATO DELL'INPUT ================== + n ==> inserisce n nell'insieme - n ==> elimina n dall'insieme ? n ==> n appartiene all'insieme? c ==> stampa numero elementi dell'insieme p ==> stampa gli elementi nell'insieme o ==> stampa gli elementi nell'insieme in ordine crescente d ==> cancella tutti gli elementi dell'insieme f ==> termina il programma ***/ #include #include /* RAPPRESENTAZIONE DI UN ELEMENTO DELLA LISTA */ struct element { // definizione di un elemento della lista int info; struct element *next; // prossimo elemento }; typedef struct element element; // 'element' e' sinonimo di 'struct element' /* NOTA Se h e' una variabile di tipo element*, allora la lista rappresentata da h e': - la lista vuota se h vale NUUL - altrimenti, h rappresenta la lista il cui primo elemento (testa) e' l'elemento di indirizzo h. */ /* Inserisce un nuovo elemento contenente n in testa alla lista h. Restituisce la lista ottenuta. */ // insert(n, h){ //} /* Stampa gli elementi della lista h */ // printList(h){ //} /* Cerca l'intero n nella lista h. Se n e' nella lista restituisce l'indirizzo del primo elemento che lo contiene, altrimenti restituisce NULL. */ // find(n, h){ //} /* Cancella l'elemento x nella lista h e restituisce la lista ottenuta. Si assume che x sia l'indirizzo di un elemento di h */ //delete(x, h){ //} /* Cancella tutti gli elementi della lista h */ //destroy(h){ //} /* Data una lista h di n elementi, restituisce l'indirizzo di un array contenente gli elementi della lista */ //listToArray(h, n){ //} int main(){ element *head; // testa della lista head = NULL; // lista vuota while((c=getchar())!= 'f'){ switch(c){ case '+': // + n: aggiungi n (se non e' gia' nell'insieme) break; case '-': // - n: elimina n (se c'e') break; case '?': // ? n: n e' nell'insieme? break; case 'c': // stampa il numero di elementi nell'insieme break; case 'p': // stampa gli elementi dell'insieme break; case 'o': // stampa elementi dell'insieme in ordine crescente break; case 'd': // cancella tutto l'insieme break; } // end switch } // end while // destroy(head); return 0; }