Ho creato questo programma, ma purtroppo non mi stampa la lista, sicuramente sbaglio qualcosa nel caricamento della lista (credo si sovrascrivano gli elementi)..
Questo è l'algoritmo..
codice:
#include <stdio.h>
#include <stdlib.h>
struct elemento{
int valore;
struct elemento *next;
};
void menu();
void insElemento();
void delElemento();
void ordLista();
int main(){
int comando;
menu();
printf("\nComando:\t");
scanf("%d", &comando);
switch(comando){
case 1:{
insElemento();
break;
}
case 2:{
delElemento();
break;
}
case 3:{
ordLista();
break;
}
}
return 0;
}
void menu(){
printf("--------------------------");
printf("\n1 - Inserisci Elemento\n");
printf("2 - Cancella Elemento\n");
printf("3 - Ordinamento Lista\n");
printf("--------------------------");
}
void insElemento(){
struct elemento *list_pointer, *list_head, *list_record;
int i, n=0, val, newval;
printf("Specificare il numero di elementi della lista: ");
scanf("%d", &n);
//Inserimento del primo elemento
list_record = (struct elemento *)malloc(sizeof(struct elemento));
printf("\nInserisci il 1 elemento: ");
scanf("%d", &val);
list_record->valore = val;
list_head=list_record;
list_pointer = list_head;
//Inserimento degli elementi successivi
for(i=2; i<=n; i++)
{
list_record->next = (struct elemento *)malloc(sizeof(struct elemento));
list_record = list_record->next;
printf("\nInserisci il %d elemento: ", i);
scanf("%d", &newval);
list_record->valore = newval;
list_head=list_record;
list_pointer = list_head;
}
list_record->next = NULL;
//Stampa della lista
printf("\nlista -> ");
while(list_record != NULL){
printf("%d", list_record->valore); // visualizza l’informazione
printf(" -> ");
list_record = list_record->next; //scorre di un elemento
}
printf(" NULL");
}
void delElemento(){
int del;
printf("Work in Progress");
}
void ordLista(){
printf("Work in Progress");
}
Quindi ricapitolando, il problema sta nell'impossibilità di stampare la lista COMPLETA (stampa l'ultimo elemento inserito), per eventuali errori nell'inserimento.
Avete qualche idea di dove possa stare il problema?
Grazie in anticipo