Me gustaría que alguien me ayudara con este codigo que desarrolle en la clase de estructura de datos. El enunciado en si es: Crear 5 listas ligadas por punteros donde:

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;
    }
}
Imagen

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;
    }
}
Saludos
Imagen
mi pregunta es drift_bit entendiste el codigo de osnaraus?
<Josh> y bueno hermano,tu hermana q me dijo q estaba cansada de tenerle el orto como la bandera de japon y bueno la pobre me quizo hacer un masaje prostatico nada mas pero era tanto su recelo y venganza acumulada q se esmero un poco mas de lo normal,pero bue,estuivo bien amorizado por la de dias horas años y lagrimas q echo la pobre de tanto culearla
Si, Es un puntero que apunta a otro puntero, muchas gracias de verdad!
Tengo un codigo por ahi de creacion de una bomba logica en c con algunas funciones de la winapi.
Lo copie de otro foto.. no se si lo pueda subir?
si se puede avisenme y lo comparto :)
Imagen
supongo que mientras mantengas los créditos originales y no sea un source privado no debería haber ningún problema

un saludo!
Responder

Volver a “C/C++”