TDA Lista de enteros IX

TDA Lista de enteros IX

Continuamos con mi pequeño tutorial de programación en C para una lista de enteros dinámica. Ahora toca el turno a una serie de funciones y procedimientos auxiliares que modularizarán y facilitarán nuestra implementación. Vamos a ver los códigos.

Haciendo un poco de recapitulación de lo que llevamos visto: comenzamos con la declaración de las funciones y procedimientos en el fichero .h, constructores, destructores y funciones auxiliares, procedimiento de meter un elemento en la lista, procedimiento de sacar u elemento de la lista, copìar la listadividir la lista, concatenar la lista y ordenar la lista.

Este procedimiento devuelve en el argumento *e el valor del nodo marcado en la lista de enteros.

void lista_look ( lista c,  struct l_enteros *e ) {
	
	if (!c) {
		fprintf (stderr, "lista_look: la lista no existe\n" );
		exit (1);
	}
	
	if (!c->nodo ) {
		fprintf (stderr, "lista_look: nodo apunta a NULL\n" );
		exit (1);
	}
	
	*e = c->nodo->val;
	
}

Este procedimiento lo que hace es trasladar la marca al siguiente nodo al que se encuentra en éste momento. En caso de que el nodo marcado sea el último, simplemente no hace nada.

void l_next ( lista c ) {
	
	if (!c) {
		fprintf (stderr, "lista_next: la lista no existe\n" );
		exit (1);
	}
	
	if (!c->nodo ) {
		fprintf (stderr, "lista_next: nodo apunta a NULL\n" );
		exit (1);
	}
	
	c->nodo = c->nodo->sig;
	if ( c->nodo ) c->indnodo++;
	else { 
		c->indnodo = c->tam;
		c->nodo = c->ulti;
	}
	
}

Una simple función que devuelve el número de nodos presentes en la lista de enteros. Ya hemos usado esta función a lo largo del tutorial que estamos tratando.

int l_tama ( lista c ) {
	
	if (!c) {
		fprintf (stderr, "lista_tama: la lista no existe\n" );
		exit (1);
	}
	
	return (c->tam);
	
}

Esta función devuelve la posición del nodo marcado en la lista de enteros. Vamos a ver el código.

int l_posi ( lista c ) {
	
	if (!c) {
		fprintf (stderr, "l_posi: la lista no existe\n" );
		exit (1);
	}
	
	return (c->indnodo);
	
}

Como siempre, dejo la sección de comentarios abierta para que me dejéis vuestras opiniones o códigos alternativos que ofrezcan otra visión a estas funcionalidades de la lista dinámica de enteros.

No Comments

Post a Comment