Autor Tema: lista enlazaada de listas enlazadas: no me sale  (Leído 2824 veces)

Desconectado netmar

  • Newbie
  • *
  • Mensajes: 2
lista enlazaada de listas enlazadas: no me sale
« en: 24 de Febrero de 2006, 06:55:18 pm »
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!!!!

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License