Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct elemento {
- int inf;
- struct elemento *next;
- };
- //defininisco la funzione crealista
- struct elemento *crealista(){
- /*dichiriamo due puntatori di tipo della nostra struttura
- il primo puntatore di nome p, serve per puntare al primo elemento
- * della nostra lista, il secondo invece serve per scorrere la lista*/
- struct elemento *p,*punt;
- int i, n;
- //chiediamo all'utente quanti elementi dobbiamo creare
- printf("Specificare numero di elementi: ");
- scanf("%d", &n);
- if(n==0)
- return NULL;
- else{//inizio else
- //creo il primo elemento
- p=(struct elemento *)malloc(sizeof(struct elemento));
- printf("ins il primo valore: \n");
- scanf("%d", &p->inf);
- punt=p;
- //per adesso ho solo un elemento, ed ho che il puntatore p, indica
- //il primo elemento, mentre il puntatore punt punta all'ultimo
- //elemento (in questo caso unico anche)
- //creo gli elementi che mancano
- for(i=2;i<=n;i++){//inizio for
- //alloco la memoria per l'elemento successivo
- punt->next=(struct elemento *)malloc(sizeof(struct elemento));
- punt=punt->next;//punt punta al prossimo elemento, cioe alla memoria
- //che ho appena allocato
- //inserisco l'informazione dentro alla struttura
- printf("Inserisci l'elemento \n");
- scanf("%d", &punt->inf);
- }//fine for
- //se sono qui vuol dire che ho creato tutti gli elementi, ora
- //devo solo far puntare l'ultimo elemento a null, perche
- //cosi facciamo in modo che sia la fine della lista.
- punt->next=NULL;
- }//fine else
- return p; //ritorno il puntatore al primo elemento della lista
- }
- //stampa la lista
- void visualizza_lista(struct elemento *p) {
- printf("\n lista ---> ");
- while(p != NULL){
- printf("%d", p->inf); /* visualizza l'informazione */
- printf(" ---> ");
- p = p->next; /* scorre la lista di un elemento */
- }
- printf("NULL\n\n");
- }
- int main(){
- struct elemento *lista;
- lista=crealista();
- //stampa lista usando la funzione
- visualizza_lista(lista);
- //stampa lista senza usare la funzione
- while(lista!=NULL){
- printf("%d --> ", lista->inf);
- lista=lista->next;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment