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.