Hola,
Estoy intentando crear una lista enlazada de listas enlazadas; esto es, una lista formada por varios nodos y cada nodo conteniendo una lista enlazada y claro un puntero al siguiente nodo. Dinamismo total!. La he declarado así:
typedef struct equivnode {
int etiqueta;
struct equivnode *next;
} EquivNode;
typedef struct equivlist
{
EquivNode *head;
struct equivlist *next;
} EquivList;
...
despues en el main() la inicializo:
EquivList *ppioListaH=NULL;
...
y la entro como parametro de una funcion para trabajarla en ella:
crearLista(a,b,ppioListaH);
...
el codigo de la funcion es: (LO QUE PRETENDO HACER ES: AL PRINCIPIO AÑADIR A LA LISTA VACIA LA LISTA ENLAZADA DE DOS NODOS a y b, Y LUEGO IR BUSCANDO EL NODO b: SI EXISTE INSERTAR EL NODO a EN EL MISMO NODO DE LA LISTA DE LISTAS ENLAZADAS DONDE ESTÁ b, Y SI b NO EXISTE CREAR UN NUEVO NODO AL FINAL DE LA LISTA DE LISTAS ENLAZADAS Y COLOCAR EN ÉL LA LISTA ENLAZADA a y b...PERO NO ME SALE???? PUEDES AYUDARME????):
void crearLista(int a, int b, EquivList *ppioLista)
{
void crea_elemento(int a,int b,EquivList *q);
void busca_nodo(int a,int b,EquivList *ppioLista);
if (ppioLista=NULL) crea_elemento(a,b,ppioLista);
else busca_nodo(a,b,ppioLista);
}
void crea_elemento(int a,int b,EquivList *q)
{
EquivNode *n,*p;
EquivList *t;
t=(EquivList*)malloc(1*sizeof(EquivList));
n=(EquivNode*)malloc(1*sizeof(EquivNode));
n->etiqueta=b;
n->next=NULL;
p=(EquivNode*)malloc(1*sizeof(EquivNode));
p->etiqueta=b;
p->next=n;
t->head=p;
t->next=q;
q=t;
}
void busca_nodo(int a,int b,EquivList *ppioLista)
{
void inserta_nodo(int a,EquivList *q);
void crea_elemento(int a,int b,EquivList *q);
EquivList *q;
q=(EquivList*)malloc(1*sizeof(EquivList));
q=ppioLista;
do {
do {
if (q->head->etiqueta==b) {
inserta_nodo(a,q);
break;
}
else q->head=q->head->next;
} while (q->head!=NULL);
q=q->next;
} while (q!=NULL);
crea_elemento(a,b,q);
}
void inserta_nodo(int a,EquivList *q)
{
EquivNode *n;
n=(EquivNode*)malloc(1*sizeof(EquivNode));
n->etiqueta=a;
n->next=q->head;
q->head=n;
}
gracias!!!!