Estructura De Datos Pilas
Enviado por alejandra.ureta • 1 de Diciembre de 2013 • 712 Palabras (3 Páginas) • 1.087 Visitas
Estructura de Datos Pilas
Alejandra Ureta Madrid
Estructura de Datos
Instituto IACC
Domingo 01 de Diciembre de 2013
Desarrollo
1. Revise la siguiente implementación interpretando línea por línea el código expuesto. Explique claramente cuál es su función e indique si su construcción es correcta o no. En cualquier caso, justifique su respuesta.
La función definida realiza lo siguiente:
- void apilar(struct tpila *pila, int elem) {
Se define la function “apilar” con los parámetros de la estructura de una pila y el tipo de elemento “elem”.
- struct tpila *nuevo;
Se declara una lista sin elementos y con cabecera “nuevo”.
- If((nuevo = (struct tpila *) malloc(sizeof(struct tpila))) == NULL)
generar_error();
Se declara una condición a través del “if”, si se cumple que “nuevo” es la cabecera de la estructura de la pila y este es igual a una “NULL”, es decir, que la pila sea vacía y con cabecera “nuevo”, entonces generará un error a través de “generar_error();”
-else {
nuevo -> clave = elem;
nuevo -> sig = pila -> sig;
pila -> sig = nuevo;
}
}
Si no se cumple la condición del “if”, entonces se hará lo que sigue en “else”, en esta parte de la función se asigna a la cabecera el elemento “elem” (nuevo -> clave = elem), posterior a esto se asigna a la cabecera siguiente posición “sig” de la pila a la cabecera “nuevo” (nuevo -> sig = pila -> sig) y por último se reasigna la posición siguiente de la pila “sig” a “nuevo”. Con esto se da fin a la función.
El objetivo de esta función es apilar en una pila elementos definidos, pero la construcción de ésta función no es correcta, ya que se necesita definir en la pila la cabecera “nuevo”, de esta manera faltaría esta parte en el código “nuevo = (struct tpila *) malloc(sizeof(struct tpila));” y se tendría que eliminar la condicionante del “if” porque siempre se va a cumplir por el hecho de ser una pila ficticia con cabecera “nuevo”.
2. Suponga que existen dos pilas de datos. La primera contiene los números enteros impares entre 1 y 100 y, la segunda, los números enteros pares entre 1 y 100. Indique de qué forma podemos fusionar ambas pilas en una sola, ordenados sus números de mayor a menor y qué tipo de implementación utilizaría para ello. Confeccione un algoritmo en pseudocódigo o en lenguaje de programación adecuado, que realice esta tarea.
Para la creación del algoritmo se supondrá que las pilas con los números enteros pares e impares estarán ordenados de menor a mayor, de esta
...