Visualizzare elementi della lista

di
Anonimizzato13836
il
2 risposte

Visualizzare elementi della lista

Ciao a tutti! ho una lista formata da 10 elementi(successivamente vorrei essere in grado di inserirne altri) le cui proprietà sono casuali (uso rand). Il programma mi stampa gli elementi in modo corretto, ma quando cerco di visualizzare solo quelli con alcune proprietà, non mi va.
Ora non so se il problema sta nella visualizzazione o se effettivamente non ho salvato in modo corretto gli elementi.
Grazie per le risposte

#include <stdio.h>
#include <stdlib.h>

#define popuIni   10

struct Elem {
	int id;
	int pp; 
	int size[4]; 
		
	struct Elem	 *next_node;  
};

typedef struct Elem Elem;
Elem *create_population();

struct Elem *create_population(){
	
	Elem *e, *p;   
	int i;
	for (i=0; i<popuIni; i++){
		
		if (i==0)
		{p=NULL;
			} else{
			
			p = (Elem*)malloc(sizeof(Elem)); 
			e=p;
			
			e->pp = rand() % 2;
			e->size[0] = rand() % 2; 
			e->size[2] = rand() % 2; 
			e->size[1] = rand() % 10+1;
			e->size[3] = rand() % 10+1;
			
			printf("%d %d \n", 	e->pp, e->size[0]);
			e = e->next_node;
		}
	}
	
	while (e->next_node != NULL){
	
		if (e->pp==1)
			printf("%d %d \n", 	e->pp, e->size[0]);
		
		e=e->next_node;
	}
}


int main(void){
	create_population();
	return (0);	
}

2 Risposte

  • Re: Visualizzare elementi della lista

    #include <stdio.h>
    #include <stdlib.h>
    
    #define popuIni   10
    
    typedef struct _Elem
    {
       int id;
       int pp;
       int size[4];
    
       struct _Elem*  next;
    }Elem;
    
    Elem* elem_new(int id,int pp, int sz0,int sz1,int sz2,int sz3)
    {
        Elem* e = malloc(sizeof(Elem));
        e->id = id;
        e->pp = pp;
        e->size[0] = sz0;
        e->size[1] = sz1;
        e->size[2] = sz2;
        e->size[3] = sz3;
    
        return e;
    }
    
    Elem* create_population()
    {
    
        Elem* e;
        Elem* first = NULL;
    
        int i;
        for ( i = 0; i < popuIni; i++)
        {
            e = elem_new(i,rand() % 2,rand() % 2,rand() % 2,rand() % 10+1,rand() % 10+1);
            e->next = first;
            first = e;
        }
    
        for (e = first ; e != NULL ; e = e->next)
        {
            if (e->pp==1)
                printf("%d %d %d \n",e->id,e->pp, e->size[0]);
        }
    
        return first;
    }
    
    
    int main(void){
       create_population();
       return (0);
    }
    usala come traccia nel cercare di tenere un codice comprensibile.
  • Re: Visualizzare elementi della lista

    Grazie mille dell'aiuto
Devi accedere o registrarti per scrivere nel forum
2 risposte