Buonasera!
Sto sviluppando un semplice programma con le liste in C, in particolare con liste collegati con puntatori, ma sto trovando diversi problemi.
Problema:
Il problema è semplicemente di conversione da un array definito attraverso dati da tastiera a una lista in forma collegata con puntatori.
La lista ottenuta dovrà avere il quadrato dei valori dell'array nell'ordine inverso.
Vi posto il codice che ho sviluppato:
Ecco, il mio problema è sostanzialmente che il puntatore nell'operazione di visita mi entra in loop e restituisce o 0 all'infinito o altri valori random in base a piccole modifice. Non capisco proprio dove sia l'errore o gli errori, penso sia un qualcosa relativo alla definizione del puntatore head ma non so più cosa inventarmi.
Qualcuno che sa come potrei risolvere il problema?
Grazie in anticipo!
Sto sviluppando un semplice programma con le liste in C, in particolare con liste collegati con puntatori, ma sto trovando diversi problemi.
Problema:
Il problema è semplicemente di conversione da un array definito attraverso dati da tastiera a una lista in forma collegata con puntatori.
La lista ottenuta dovrà avere il quadrato dei valori dell'array nell'ordine inverso.
Vi posto il codice che ho sviluppato:
#include <stdio.h>
#include <stdlib.h>
struct list * arrayToList(float * V,int size);
void init (struct list ** ptrptr);
void preInsert(struct list ** ptrptr, float val);
void visit(struct list * ptr);
int main()
{
int i,n;
float * V;
struct list * head;
struct list ** headp;
struct list{
float value;
struct list * next;
};
void init(struct list ** ptrptr){
*ptrptr=NULL;
}
void preInsert(struct list ** ptrptr, float val){
struct list * temp=*ptrptr;
*ptrptr=(struct list *)malloc(sizeof(struct list));
(*ptrptr)->value=val;
(*ptrptr)->next=temp;
}
struct list * arrayToList(float * V, int size){
int count;
struct list * head;
init (&head);
for(count=0;count<size;count++)
preInsert(&head,V[count]*V[count]);
return head;
}
void visit(struct list * ptr ){
while (ptr->next!=NULL)
printf("%f\n",ptr->value);
ptr=ptr->next;
}
printf("Inserire dimensioni dell'array:\n");
scanf("%d",&n);
V=(float *)malloc(sizeof(float)*n);
printf("Inserire valori dell'array:\n");
for (i=0;i<n;i++)
scanf("%f",&V);
head=arrayToList(V,n);
visit(&head);
}
Ecco, il mio problema è sostanzialmente che il puntatore nell'operazione di visita mi entra in loop e restituisce o 0 all'infinito o altri valori random in base a piccole modifice. Non capisco proprio dove sia l'errore o gli errori, penso sia un qualcosa relativo alla definizione del puntatore head ma non so più cosa inventarmi.
Qualcuno che sa come potrei risolvere il problema?
Grazie in anticipo!