Asignacion Pila Cola Arboles

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

Problemas de Pila

1.- Escriba las primitivas de gestión de una pila implementada con un


array.
Análisis del problema

Se define en primer lugar una constante MaxTamaPila de valor 100 valor


máximo de los elementos que podrá contener la pila. Se define la pila como
una estructura cuyos campos (miembros) serán el puntero cima que apuntara
siempre al ultimo elemento añadido a la pila y un array A cuyos índices variaran
entre 0 y MaxTamaPila-1. Posteriormente se implementan las primitivas
• VaciaP. Crea la pila vacía poniendo la cima en el valor -1.
• EsvaciaP. Decide si la pila esta vacia. En este caso ocurrira cuando su cima
valga -1.
• EstallenaP. Si bien no es una primitiva basica de gestion de una pila; la
implementacion se realiza con un array conviene disponer de ella para prevenir
posibles errores. En este caso la pila estara llena cuando la cima apunte al
valor MazTamaPila-º.
• AnadeP. Añade un elemento a la pila. Para hacerlo comprueba en primer
lugar que la pila no este ellena, y en caso afirmativo. Incrementa la cima en
unidad, para posteriormente poner en el array A en la posicion cima el
elemento.
• PrimeroP. Comprueba que la pila no este vacía, y en caso de que asi sea,
dara el elemento del array A almacenado en la posición apuntada por la cima.
• BorrarP. Se encarga de eliminar el último elemento que entro en la pila. En
primer lugar comprueba que la pila no este vacia cuyo caso, disminuye la cima
en una unidad.
• Pop. Esta operación extrae el primer elemento de la pila y lo borra. Puede ser
implementada directamente, o bien llamando a las primitivas PrimeroP y
posteriormente a BorrarP.
• Push. Esta primitiva coincide con AnadeP.

2.- Escribir un programa que usando las primitivas de gestion de una pila,
lea datos de la entrada (-1 fin de datos) los almacene en una pila y
posteriormente visualice dicha la pila.
Analisis del problema

Si se supone que el archivo pilaarray.cpp contiene todas las primitivas de


gestion de una pila, para resolver el problema bastara declarar TipoDato como
un entero incluir el archivo pilaarray.cpp anterior, y mediante un programa
principal en un primer bucle while se leen dato y se almacenan en una pila,
para posteriormente en otro bucle extraer datos de la pila y presentarlos en
pantalla.
3.- escriba las primitivas de gestión de una pila implementada con una
lista simple enlazada.
Análisis del problema

Se define como una lista simplemente enlazada. Posteriormente se


implementan las primitivas:
• VaciaP. Crea la pila vacia poniendo la pila P a NULL.
• EsvaciaP. Decide si pila vacia. Esto ocurrira cuando P valga NULL.
• AnadeP. Añade un elemento a la pila. Para hacerlo, lo unico que se debe
hacer, es añadir un nuevo nodo que contenga como informacion el elemento
que se quiera añadir y ponerlo como primero de la lista enlazada.
• PrimeroP. En primer lugar se comprobara que la pila (lista) no este vacia, y en
caso de que asi sea dara el campo el almacenado en el primer nodo de la lista
enlazada.
• BorrarP. Se encarga de eliminar el ultimo elemento que entro en la pila. En
primer lugar se comprueba que la pila no este vacia en cuyo caso, se borra el
primer nodo de la pila (lista enlazada).
• Pop. Esta operación extrae el primer elemento de la pila y lo borra. Puede ser
implementada directamente, o bien llamando a las primitivas PrimeroP y
posteriormente a BorrarP.
• Push. Esta primitiva coincide con AnadeP.
• NuevoNodo. Es una función auxiliar de la implementación que se encarga de
reserva de reservar memeoria para la operación AnadeP.
• EstallenaP. En esta implementación no tiene ningún sentido, ya que se
supone que la memoria dinámica es en principio inagotable.

4.- Usando las primitivas de gestión de una pila de enteros escriba las
siguientes funciones: EscribePila que recibe como parámetro una pila y la
escribe. CopiadPila que coia una pila en otra. DaVueltaPila que da la
vuelta a una pila.

Análisis del problema

Usando el archivo pilalista.cpp en el que se tiene ya la implementacion de las


primitivas de una pila, lo unico que se debe hacer es implementar las siguientes
funciones:
• EscribePila que recibe como parametro por valor una pila y mediante un bucle
while, se van extrayendo, borrando y escribiendo los elementos de la pila.
• CopiaPila que recibe como parametro por valor una pila p y devuelve en Pcop
una copia exacta de la pila P. Par ello basta con volcar la pila P en una pila
Paux auxiliar, para posteriormente volcar la pila Paux en la pila Pcop.
• DaVueltaPila que recibe como parametro por valor la pila P y vuelva su
contenido en la pila Pcop.

5.- Escriba las funciones LiberarPila y SonIgualesPilas que


respectivamente libera todos los nodos de una pila implementada con
lista y decide si dos pilas son iguales.
Análisis del problema

Al igual que en el ejercicio anterior se usa pilalista.cpp en el que se tiene ya la


implementacion de las primitivas de una pila, lo unico que resta por hacer es
implementar las siguientes funciones:
• LiberarPila que mediante un bucle mientras se encarga de ir extrayendo los
elementos de la pila y mediante la funcion BorrarP irlos eliminando.
• SonIgualesPilas. Dos pilas son iguales si tienen el mismo numero de
elementos y ademas coinciden en el orden de colocacion. Por lo tanto basta
con un bucle mientras, controlado por haber datos en las dos pilas y haber sido
todos los elementos extraido anteriormente iguale, extraer un elemento de cada
una de las pilas y seguir decidiendo sobre su igualdad. Al final del bucle debe
ocurrir que las dos pilas esten vacias y ademas que las variable logica que
controla el bucle sea verdadera.

Problemas de Colas

1.- Escriba las declaraciones necesarias y las primitivas de gestión de una


cola implementada con listas enlazadas

Análisis del problema

Se declaran en primer lugar todos los tipos de datos necesarios para una lista
enlazada. Una cola será una estructura con dos punteros a la lista frente que
apuntara al primer elemento de la cola y final que apuntara al último elemento.
• VaciarC. Crea una cola vacia, para lo cual basta con poner en frente y el final
a null.
• EsvaciaC. Decide si la cola esta vacía. Es decir si frente y final valen null
• EstallenaC. Esta función no es ahora necesaria ya que teóricamente no hay
límite.
• PrimeroC. Extrae el primer elemento de la cola que se encuentra en el nodo
frente. Previamente a esta operación ha de comprobarse que la cola no este
vacia.
• AñadeC. Añade un elemento a la cola.este elemento se añade en un nuevo
nodo que será el siguiente de final en el caso de que la cola no este vacia. Si la
cola esta vacia el frente debe apuntar a este nuevo nodo. En todo caso el final
siempre debe moverse al nuevo nodo.
• BorrarC. Elimina el primer elemento de la cola. Para hacer esta operación la
cola no debe estar vacia. El borrado se realiza avanzando frente al nodo
siguiente y liberando la memoria correspondiente .
• EliminarC. Esta primitiva libera toda la memoria que tenga una cola ya creada.
Se realiza mediante un bucle controlado por el final de la lista. Liberando la
memoria ocupada por cada nodo en cada una de las interacciones del bucle.
2.- Escriba una función que tenga como argumento dos colas del mismo
tipo. Devuelva cierto si las dos colas son idénticas

Análisis del problema

Se usan para resolver el problema las primitivas de gestión de colas


implementando una función son iguales colas que dará el valor verdadero
cuando las dos colas tengan igual número de elementos y además estén
colocada en el mismo orden.

3.- Escriba una función que reciba como parámetro una cola de números
enteros y nos devuelva el mayor y el menor de la cola.

Análisis del problema

Se usan las primitivas de gestión de colas implementadas con listas, lo único


que hay que hacer es inicializar mayor y menor al primer elemento de la cola, y
mediante en bucle voraz controlado por si se vacía la cola, ir actualizando las
variables mayor y menor.

Problema de árbol

1.- se dispone de un árbol binario de elementos de tipo entero. Escriba


funciones que calculen:

a) La suma se sus elementos.


b) La suma de sus elementos que son múltiplos de 3

Análisis del problema

Para resolver el problema basta con implementar las dos funciones efectuando
al hacer un recorrido del árbol las correspondientes operaciones.

También podría gustarte