Una lista delle cose che non capisco...
Sto cominciando a studiare le liste, e per "provare" ho scritto un programmino che mi legge tre interi e me le mette in una lista...a quanto pare però il programma è sbagliato...dov'è l'errore?
#include
#include
//Lista di tre elementi immessi sullo schermo
//Implementazione lista
struct EL{
int dato;
struct EL *next;
};
typedef struct EL ElementoLista;
typedef ElementoLista *IndirizzoElemento;
main(){
ElementoLista L1,L2,L3;
IndirizzoElemento lista=NULL,aux;
aux=malloc(sizeof(ElementoLista));
scanf("%d",L3.dato);
L3.next=lista;
lista=aux;
aux=malloc(sizeof(ElementoLista));
scanf("%d",L2.dato);
L2.next=lista;
lista=aux;
aux=malloc(sizeof(ElementoLista));
scanf("%d",L1.dato);
L1.next=lista;
lista=aux;
}
P.S. IL compilatore dà errore alle istruzioni come
scanf("%d",L2.dato) in quanto, dice lui, %d si aspetta argomenti di tipo *int mentre L2.dato è int (ma i puntatori non si indicavano con %p?)
#include
#include
//Lista di tre elementi immessi sullo schermo
//Implementazione lista
struct EL{
int dato;
struct EL *next;
};
typedef struct EL ElementoLista;
typedef ElementoLista *IndirizzoElemento;
main(){
ElementoLista L1,L2,L3;
IndirizzoElemento lista=NULL,aux;
aux=malloc(sizeof(ElementoLista));
scanf("%d",L3.dato);
L3.next=lista;
lista=aux;
aux=malloc(sizeof(ElementoLista));
scanf("%d",L2.dato);
L2.next=lista;
lista=aux;
aux=malloc(sizeof(ElementoLista));
scanf("%d",L1.dato);
L1.next=lista;
lista=aux;
}
P.S. IL compilatore dà errore alle istruzioni come
scanf("%d",L2.dato) in quanto, dice lui, %d si aspetta argomenti di tipo *int mentre L2.dato è int (ma i puntatori non si indicavano con %p?)
Risposte
Ciao,
devi mettere
però è sbagliato proprio il modo in cui inserisci gli elementi nella lista. Se mi dai qualche minuto ti posto una versione corretta.
devi mettere
scanf("%d",&(L3.dato));
però è sbagliato proprio il modo in cui inserisci gli elementi nella lista. Se mi dai qualche minuto ti posto una versione corretta.
Ecco qui:
Facci sapere se hai dubbi.
#include <stdio.h> #include <stdlib.h> //Lista di tre elementi immessi sullo schermo //Implementazione lista struct EL { int dato; struct EL *next; }; typedef struct EL ElementoLista; typedef ElementoLista *List; /* funzione che stampa una lista */ void stampa_lista(List l) { while(l != NULL) { printf("%d\n", l->dato); l = l->next; } } /* funzione che inserisce un elemento in coda alla lista */ List ins_in_coda(List head, int elem) { /* alloco il nuovo elemento e imposto i suoi campi */ List new_elem = (List) malloc(sizeof(ElementoLista)); new_elem->dato = elem; new_elem->next = NULL; /* se la lista e' vuota */ if(head == NULL) return new_elem; /* scorro la lista fino all'ultimo elemento */ List aux = head; while(aux->next != NULL) aux = aux->next; /* "incollo" il nuovo elemento */ aux->next = new_elem; /* restituisco sempre la testa della lista */ return head; } int main() { List lista=NULL; int length, i, elem; printf("Quanti elementi vuoi inserire? "); scanf("%d", &length); /* riempimento della lista */ for(i=0; i<length; ++i) { printf("Inserire il prossimo elemento: "); scanf("%d", &elem); lista = ins_in_coda(lista, elem); } stampa_lista(lista); return 0; }
Facci sapere se hai dubbi.