RESPUESTA A LA PREGUNTA 3380 Sobre la pregunta que planteas te diré que hay dos maneras de realizar la creación de estructuras, puedes realizar estructuras simplemente apuntadas y doblemente apuntadas. Yo he utilizado siempre las listas doblemente apuntadas, son mas complejas de implementar pero son más simples de manipular. Bueno al grano, empecemos. Definición de la estructura: Struct persona{ int codigo; int edad; char nombre[10]; struct persona *sig; struct persona *ant; }; struct persona *top=NULL,*nuevo,*test; /*Se podría realizar la definición de los apuntadores dentro del main pero es complicar mucho mas la realización del programa, ya que tendríamos que realizar el paso de los apuntadores ha una función*/ Creación de un elemento: void crear { nuevo= (Struct persona *) malloc(Sizeof (Struct persona *)); if (top==NULL) { top=test=nuevo; nuevo->ant=NULL; }else{ test=top; while (test->sig!=NULL) { test=test->sig; } test->sig=nuevo; nuevo->ant=test; } nuevo->sig=NULL; /*Aquí se puede realizar la llamada a una función que rellene los campos de la estructura*/ } Búsqueda de un elemento: void buscar (int codigo2){ while (test->codigo!=codigo2) { if (numero < test->valor ){ test=test->ant; }else{ test=test->sig; } } } Eliminación: Una vez realizado la busqueda de un elemento podemos eliminarlo de la siguiente manera: test->sig->ant=test->ant; test->ant->sig=test->sig; luego aplicamos la función free al apuntador test, para eliminarla de memoria. Bueno espero que te haya resultado útil. Saludos de Eduard Garcia Castelló (NoCoDe). edcatalunya@geocities.com