====== Examen Final - 75.41. Algoritmos y Programación II======
**Cátedra:** Mandrafina\\
**Fecha:** Ejercicios varios de Final - Primer Cuatrimestre 2006\\
**Día:** alguno de 2006
Esta página está incompleta; podés ayudar completando el material.
===== Enunciado =====
==== Punto I ====
Diseñar e implementar (con POO) una pila
==== Punto II ====
Diseñar ( diagrama de clases) y codificar la interfaz en lenguaje C++.
**Profesor:** tiene por lo minimo nombre, apellido, DNI. Tambien dispone de antiguedad, puede ejercer como máximo en 5 cátedras, pudiendo ser establecidas y consultadas todas ellas.
**No docente:** tiene por lo minimo nombre, apellido, DNI. Tambien dispone de antiguedad, horario de entrada, horario de salida, pudiendo ser establecidas y consultadas todas ellas.
===== Resolución =====
==== Punto I ====
{{:materias:75:41:diadeclasepila.png|:materias:75:41:diadeclasepila.png}}
Primero definimos el nodo:
//nodose.cpp
#include "nodose.h"
nodo::nodo(void* dato){
this->dato = dato;
this->siguiente = 0;
}
nodo::~nodo(){
this->dato = 0;
this->siguiente = 0;
}
void nodo::setSiguiente(nodo* siguiente){
this->siguiente = siguiente;
}
nodo* nodo::getSiguiente(){
return this->siguiente;
}
void nodo::setDato(void* dato){
this->dato = dato;
}
void* nodo::getDato(){
return this->dato;
}
Luego la pila en sí:
//pila.cpp
#include "pila.h"
#include
pila::pila() {
this->top = 0;
}
pila::~pila() {
while (!this->vacia()){
this->desapilar();
}
}
bool pila::vacia() {
return (this->top == 0);
}
void pila::apilar(void* dato) {
nodo* nuevo = new nodo(dato);
nuevo->setSiguiente(this->top);
this->top = nuevo;
}
void* pila::desapilar() {
void* dato;
nodo* nuevoTop;
dato = this->top->getDato();
nuevoTop = this->top->getSiguiente();
delete (this->top);
this->top = nuevoTop;
return dato;
}
Y para probar que esto anda, podemos usar:
#include
#include "pila.h"
int main() {
std::cout << "Prueba de mi pila" << std::endl;
pila* miPila = new pila();
int* miNumero = new int;
int* otroNumero = new int;
int* otroNumeroMas = new int;
int* respuesta;
*miNumero = 2;
miPila->apilar((void*)miNumero);
*otroNumero = 3;
miPila->apilar((void*)otroNumero);
*otroNumeroMas = 10;
miPila->apilar((void*)otroNumeroMas);
while (!miPila->vacia()) {
respuesta = (int*)miPila->desapilar();
std::cout << *respuesta <
===== Discusión =====
Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.