mi problema aki es el sig.
tengo este código
libreria
Código:
/*********************
**********************
** **
** stlist.h **
** **
**********************
*********************/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//Definimos el tipo de dato a ingresarse en la lista
struct ElementoLista
{
int valor; // -> Dato que guardara la lista
struct ElementoLista *sig; // -> Apuntador permitirá el acceso al próximo elemento
};
typedef struct ElementoLista _dato;
struct ListaIdentificar{
_dato *inicio;
_dato *fin;
int tamano;
};
typedef struct ListaIdentificar _lista;
//hacemos la funcion que inicializa la lista en NULL
void iniciaLista(_lista *LISTA)
{
LISTA->inicio=NULL;
LISTA->fin=NULL;
LISTA->tamano=0;
}
//funcion para ingresar un 1° valor
/* inserción en una lista vacía */
_lista *ins_en_lista(_lista *lista,int dato)
{
_dato *nuevo,*inicio_lista;
_lista *apuntadorAux;
nuevo=(_dato *) malloc(sizeof(_dato));
nuevo->valor=dato;
nuevo->sig=NULL;//printf("\nCreamos un nuevo _dato con valor: %d *sig: %s",nuevo->valor,nuevo->sig);
if (nuevo!=NULL)
{
if(lista->inicio==NULL && lista->fin==NULL)
{
lista->inicio=nuevo;
lista->fin=nuevo;
lista->tamano=lista->tamano+1;
//printf("\nVALORES DE LA LISTA [%d]",dato);
//printf("\nInicio->valor: %d",lista->inicio->valor);
//printf("\nInicio->*sig: %s",lista->inicio->sig);
//printf("\nFin->valor: %d",lista->fin->valor);
//printf("\nFin->*sig: %s",lista->fin->sig);
}
else
{ inicio_lista=lista->inicio;
apuntadorAux=lista;
//printf("\n\nVALORES AUXILIARES iniciales DE LA LISTA [%d]",dato);
//printf("\nInicio->valor: %d",apuntadorAux->inicio->valor);
//printf("\nInicio->*sig: %s",apuntadorAux->inicio->sig);
//printf("\nFin->valor: %d",apuntadorAux->fin->valor);
//printf("\nFin->*sig: %s",apuntadorAux->fin->sig);
while(apuntadorAux->inicio->sig!=NULL)
{
apuntadorAux->inicio=apuntadorAux->inicio->sig;
}
apuntadorAux->inicio->sig=nuevo;
apuntadorAux->inicio=inicio_lista;
lista->fin=nuevo;
lista->tamano++;
//printf("\n\nVALORES AUXILIARES finales DE LA LISTA [%d]",dato);
//printf("\nInicio->valor: %d",apuntadorAux->inicio->valor);
//printf("\nInicio->*sig: %s",apuntadorAux->inicio->sig);
//printf("\nFin->valor: %d",apuntadorAux->fin->valor);
//printf("\nFin->*sig: %s",apuntadorAux->fin->sig);
}
}
else
{
printf("!!!!!!!!!!NO HAY MEMORIA!!!!!!!!!");
}
return lista;
}
void imprime_lista(_lista *lista)
{
_dato *nodo;
nodo=lista->inicio;
printf("\ninicio-> ");
while(nodo!=NULL)
{
printf("%d-> ",nodo->valor);
nodo=nodo->sig;
}
printf("fin de la lista\n");
printf("\nCARDINALIDAD: %d",lista->tamano);
}
int pertenencia(_lista *lista,int busca)
{
/*printf("XXX");*/
_lista *apuntador_aux;
int regresa;
apuntador_aux=lista;
while(apuntador_aux->inicio->valor!=busca && apuntador_aux->inicio->sig!=NULL)
{
apuntador_aux->inicio=apuntador_aux->inicio->sig;
}
if(apuntador_aux->inicio->valor==busca)
{
regresa=1;
}
if(apuntador_aux->inicio->sig==NULL)
{
regresa=0;
}
return regresa;
}
Código:
/*********************
**********************
** **
** conjuntos.c **
** **
**********************
*********************/
#include<string.h>
#include<stlist.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void main()
{
_lista *lista_A;
_lista *lista_B;
int opc,dat,pert;
iniciaLista(lista_A);
do{
opc=0;
printf("\nIngresa valor 1° conjunto");
fflush(stdout);
scanf("%d",&dat);
/************************************/
ins_en_lista(lista_A,dat);
printf("\nDeseas ingresar otro valor ingresa 1\n");
scanf("%d",&opc);
}while(opc==1);
imprime_lista(lista_A);
/*****************/pert=pertenencia(lista_A,dat);
iniciaLista(lista_B);
do{opc=0;
printf("\nIngresa valor 2° conjunto");
scanf("%d",&dat);
ins_en_lista(lista_B,dat);
printf("\nDeseas ingresar otro valor ingresa 1");
scanf("%d",&opc);
}while(opc==1);
imprime_lista(lista_B);
}

(nececito hacer que no se repita un mismo valor en un conjunto, por lo cual mando llamar a pertenencia para que me indique si el elemento existe o no y asi poder )
Código:
/************************************/pert=pertenencia(lista_A,dat);
ins_en_lista(lista_A,dat);
printf("\nDeseas ingresar otro valor ingresa 1\n");
scanf("%d",&opc);
}while(opc==1);
imprime_lista(lista_A);
/*****************/
CAMBIE pert=pertenencia(lista_A,dat); de los asteriscos cortos al mas largo
espero me puedan explicar por que demonios pasa eso... por su atencion gracias