1era lista: Se alamacenen multiplos de 2
2da lista: se almacenen multimplos de 3
3era lista: se almacenen multiplos de 4
4ta lista: se almacenen multiplos de 5
5ta lista: otro caso.
Nota: Pueden existir datos que se almacenen en 2da y 4ta lista, etc;
El problema que tengo es que al llamar a la funcion ingresar_datos();
la lista enviada siempre cumple el caso _primero=NULL (ver codigo ).
Espero que alguien me pueda ayudar, de antemano muchas gracias!
Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>
typedef struct lista{
int valor;
struct lista *nodo;
}LISTA;
void ingresar_datos( int n, LISTA *_primero, LISTA *_ultimo );
void imprimir( LISTA *_primero );
main()
{
int aux, flag=0, cont = 0;
LISTA *_primero1=NULL, *_ultimo1=NULL, *_primero2=NULL, *_ultimo2=NULL;
LISTA *_primero3=NULL, *_ultimo3=NULL, *_primero4=NULL,
*_ultimo4=NULL,*_primero5=NULL, *_ultimo5=NULL;
do{
printf( "ingrese: " );
scanf( "%d", &aux );
flag=0;
if( aux % 2 == 0 ){
//lista1
flag=1;
ingresar_datos( aux, _primero1, _ultimo1 );
}
if( aux % 3 == 0 ){
//lista2
flag=1;
ingresar_datos( aux, _primero2, _ultimo2 );
}
if( aux % 4 == 0 ){
//lista3
flag=1;
ingresar_datos( aux, _primero3, _ultimo3 );
}
if( aux % 5 == 0 ){
//lista 4
flag=1;
ingresar_datos( aux, _primero4, _ultimo4 );
}
if( flag==0 ){
//lista5
ingresar_datos( aux, _primero5, _ultimo5 );
}
cont++;
}while( cont != 3 );
imprimir( _primero1 );
getchar();
getchar();
}
void ingresar_datos( int n, LISTA *_primero, LISTA *_ultimo )
{
LISTA *nuevo;
nuevo = (LISTA *) malloc( sizeof(LISTA) );
nuevo->valor = n;
nuevo->nodo = NULL;
if( _primero == NULL ){ // Esto se cumple siempre
_primero = nuevo;
_ultimo = nuevo;
}
else{
_ultimo->nodo = nuevo;
_ultimo = nuevo;
}
}
void imprimir( LISTA *_primero )
{
while( _primero != NULL ){
printf( "%d", _primero->valor );
_primero = _primero->nodo;
}
}