#include <stdio.h>
#include <stdlib.h>
typedef enum{true=1,false=0} bool; // creo il tipo booleano
struct list{ // ho dichiarato la struttura della lista sequenziale
float *buffer;
int size;
int head;
int tail;
};
void init(struct list*, int);
bool ins_testa(struct list *,float);
void visit (struct list*);
int main(void) {
int size; // con questo decido il numero degli elementi dell'array circolare, buffer
float valore;
struct list *ptr;
ptr=NULL;
bool found;
found=false;
printf("Inserisci manualmente size dell'array\n\n");
scanf("%d",&size);
printf("adesso inseriamo un po' di dati\n");
scanf("%f",&valore);
init(ptr,size);
ins_testa(ptr,valore); // ho un problema, mi esce in automatico....
if(found==true)
printf("valore inserito con successo\n\n");
else
printf("non è stato possibile inserire altri valori");
visit(ptr);
return EXIT_SUCCESS;
}
void init(struct list* ptr, int size){
ptr->buffer=(float *)malloc(size*sizeof(float));
ptr->size=size;
ptr->head=0;
ptr->tail=0;
}
bool ins_testa(struct list *ptr,float value){
bool found;
if(((ptr->tail+1)%ptr->size)!=ptr->head)
{
ptr->head=(ptr->head+ptr->size-1)%ptr->size;
ptr->buffer[ptr->head]=value;
found=true;
}
else
found=false;
return found;
}
void visit (struct list*ptr){
int position;
for(position=ptr->head;position!=ptr->tail;position=(position+1)%ptr->size)
printf("%f",ptr->buffer[position]);
}
Buongiorno stavo implementando il codice per una lista sequenziale, buffer circolare.
Prima di implementare completamente il codice, stavo facendo delle prove, purtroppo quando arriva alla parte dove richiamo la funzione di inizializzazione , ide (sia code block, che eclipse) mi da generico errore e non mi permette di continuare.
A mio avviso il problema dipende proprio da qua:
......................
init(ptr,size);
.............
ho fatto varie prove ed il codice si blocca proprio qua.... ho inoltre provato ad inizializzare senza richiamare la funzione, quindi :
ptr->buffer=(float *)malloc(size*sizeof(float));
ptr->size=size;
ptr->head=0;
ptr->tail=0;
ma mi continua ad uscire dall'ide, quindi non mi fa completare .
Credo che quindi dipenda dall'inizializzazione sbagliata, in verità a livello teorico l'inizializzazione dovrebbe essere corretta.
Forse mi perdo qualcosa.....