Insertar elementos en una pila de enteros

Insertar elementos en una pila de enteros

Comenzamos a codificar nuestro TDA Pila de enteros. En ésta ocasión vamos a insertar un elemento en la pila que, como ya recordarás tiene dos campos, el dato en si y un puntero al siguiente elemento. Habrá que recorar también que se trata de una estructura lineal como un orden último en entrar, primero en salir, o L.I.F.O.

El funcionamiento del procedimiento es sencillisimo, como no podría ser nuestro primer ejemplo. Al procedimiento le pasaremos dos argumentos: la pila que vamos a modificar insertándole un nuevo elemento -por referencia- y el elemento a insertar -por valor-.

Lo primero que haremos es asegurarnos que existe memoria disponible. Mediante una estructura condicional comprobaremos la disponibilidad de memoria, y en caso afirmativo, reservaremos la memoria con la función malloc. En caso negativo, simplemente saldremos del procedimiento con un mensaje de error.

A continuación usaremos una variable auxiliar para situar el elemento en el orden adecuado. ¿Fácil no?. Ahora le toca al código:

void p_enteros_mete ( p_enteros *p, struct p_enteros_ele e ) {
	
	p_enteros nuevo;
	
	nuevo = ( struct p_enteros_ele ) malloc ( sizeof ( struct p_enteros_ele ));
	if (!nuevo ) {
		fprintf ( stderr, "p_enteros_mete: No hay memoria suficiente. \n" );
		exit (1);
	}
	
	nuevo->val = e;
	nuevo->sig = *p;
	*p = nuevo;

}

En los próximos artículos iremos viendo los procedimientos y funciones que faltan. Como siempre, recuerdo a los lectores que, a través de la sección de comentarios, pueden publicar las alternativas a esta propuesta.

Os recuerdo las direcciones de los artículos anteriores: TDA Pila de Enteros e Inicio de la estructura de datos pila. Aprovecho también para recordaros que en mi cuenta de github voy a dejar todos éstos códigos para que os los podáis descargar y usar libremente.

No Comments

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.