RE:listas enlazadas, doblemente enlazadas y circul
Publicado por
Tatiana (1 intervención) el 27/11/2002 21:10:25
Operaciones elementales Lista Enlazada
/* Declaracion de Lista Enlazada */
struct lista{
char nombre[20];
int edad;
struct lista *sig;
}*Lista;
/* Crea un nodo de la lista y lo inicializa */
struct lista *CreaNodo()
{
struct lista *ptr;
ptr = ( struct lista *) malloc( sizeof( struct lista ) );
memset( ptr->dato, \'\\0\' , 20 );
ptr->edad = 0;
ptr->sig = NULL;
return( ptr );
}
/* Destruye la lista enlazada en forma recursiva */
void DestruirLista( struct lista *p )
{
if( p == NULL )
return;
if( p != NULL )
DestruirLista( p->sig );
free( p );
}
/* Recorre la lista hasta el final y agrega un nuevo elemento */
void AgregaDatoALista( char *nom, int num )
{
struct lista *p, *q;
/* Si la lista esta vacía la crea e inicializa */
if( Lista == NULL )
Lista = CreaNodo();
p = Lista;
while( p != NULL )
{
q = p;
/* Si el ultimo nodo no tiene nada agrega los nuevos datos */
if( strncmp( p->nombre, \'\\0\' , 20 ) == 0 && p->sig == NULL )
{
strcpy( p->nombre, nom );
p->edad = num;
}
p = p->sig; /* Se mueve al siguiente registro */
}
q->sig = CreaNodo();
}
Rutealo para que lo entiendas