IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

Documentos relacionados
LISTAS ENLAZADAS DOBLES C++

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

PILAS. Prof. Ing. M.Sc. Fulbia Torres

Las FILAS. ING PEDRO BELTRÁN CANESSA Estructuras de Datos 1

Tema: Plantillas en C++.

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

1. Juego del Ahorcado

Introducción: una simple colección

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).

Implementación de las Clases Pila, Cola, Lista y Arbol

Capitulo V Listas Enlazadas

Segundo Parcial de Programación 2 7 de junio de 2017

Tipos Recursivos de Datos

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2007.

Tema 5. Estructura de datos Pila

Estructuras Enlazadas AyED UTN-BA

Capítulo. Listas, pilas y colas en C++ Contenido. Introducción

INSTITUTO TECNOLÓGICO DE NUEVO LAREDO ING. EN SISTEMAS COMPUTACIONALES

Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola

Prof. Dr. Paul Bustamante

ÁRBOLES PARCIALMENTE ORDENADOS

Biblioteca de templates. template <typename T> void eliminar(t arr[], int& len, int pos);

INSTITUTO TECNOLÓGICO DE NUEVO LAREDO ING. EN SISTEMAS COMPUTACIONALES

ÁRBOLES BINARIOS DE BÚSQUEDA (ABB)

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Sobre Carga de Operadores

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Segundo parcial de Programación 2

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

Estructura de datos y de la información Boletín de problemas - Tema 10

Programación de sistemas Listas enlazadas

Grado en Ingeniería Informática. Estructura de Datos y Algoritmos, Grupo 84M, 2014/ de Marzo de

LISTAS. Prof. Ing. M.Sc. Fulbia Torres

APUNTES PROII 2º PARCIAL.

Estructuras de datos en memoria principal

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7

Estructuras de datos en memoria principal

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

Estructuras de Datos y Algoritmos (ITIS). TAD Tree. Estructuras de Datos y Algoritmos (ITIS) Ingeniería Técnica en Informática de Sistemas, Curso 2º

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Programación TADs Lineales Lista Pila Cola

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Práctica 8: Barreras

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Estructuras de Datos Clase 6 Listas e Iteradores (primera parte)

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Prof. Dr. Paul Bustamante

Tema 6. Gestión dinámica de memoria

Impresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos)

Realizar el ejercicio anterior utilizando Punteros

Tema: Arreglos de Objetos en C++.

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de Certamen Final

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Programación 4 EXAMEN DICIEMBRE SOLUCIÓN

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

Estructura de Datos: Lista. Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras. Autora: Prof.

Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Taller de Programación I. Tema 08: Estructuras Dinámicas de Datos en Java

Tema: Clases y Objetos en C++.

Estructura de datos y Programación

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Solucionado!!! La Torre de Hanói (Sin recursividad)

Guía de Referencia Rápida de C++ (std)

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Métodos CON valor de retorno

ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS)

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda Trayecto II Desarrollo de Software

CAPÍTULO 6 COMPOSICIÓN Y AGREGACIÓN

Tipos abstractos de datos (TAD)

PROGRAMACIÓN GENÉRICA

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

Listas enlazadas. Programación de Sistemas

Soluciones. boolean pruebaiteraseriegeometrica () { Serie s= new SerieGeometrica (1, 2); return (s.iterator() instanceof IteraSerieGeometrica); }

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

LISTAS DOBLES y multiples

Introducción al lenguaje C

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

ESTRUCTURAS DINÁMICAS DE DATOS (PILAS)

Hoja de ejercicios del Tema 9

Estructuras de Datos Clase 14 Árboles binarios de búsqueda

Prof. Dr. Paul Bustamante

Introducción a C++ y Code::Blocks

Son aquellas que se implementan usando vectores por lo que tienen un número de elementos limitado.

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

UTN FRBA Algoritmos y Estructura de Datos Examen Final 13/02/2015. Apellido y nombre: Legajo: Cursó con Prof:

Transcripción:

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++ Fichero nodo.h #ifndef NODO_H #define NODO_H const int cantidad_nodos = 10; class Nodo private: string dato; Nodo* siguiente; public: Nodo(); void setdato(string inf); void setsiguiente(nodo* sig); string getdato(); Nodo* getsiguiente(); virtual ~Nodo(); ; #endif // NODO_H Fichero nodo.cpp Nodo::Nodo() dato = ""; siguiente = NULL; void Nodo::setDato(string inf) dato = inf; void Nodo::setSiguiente(Nodo* sig) siguiente = sig; string Nodo::getDato() return dato; Nodo* Nodo::getSiguiente() return siguiente; Nodo::~Nodo() //dtor

Fichero declararpila.h #ifndef DECLARARPILA_H #define DECLARARPILA_H class DeclararPila private: int totalnodos; Nodo* tope; public: DeclararPila(); int gettotalnodos(); //Método que devuelve la cantidad de nodos que tiene la pila. Nodo* gettope(); //Método que devuelve el nodo del tope de la pila. //Métodos para determinar el estado de la pila (pila llena o pila vacía). Para esto se declaran dos funciones //de tipo booleano. Si la pila esta Llena se retorna el valor de true, en caso contrario se retorna el valor false. //Lo mismo si la pila esta vacía se retorna el valor de true, en caso contrario se retorna el valor false. bool pilallena(); bool pilavacia(); void agregar(string dato); void quitar(); string valortope(); void limpiarpila(); virtual ~DeclararPila(); ; #endif // DECLARARPILA_H Fichero declararpila.cpp #include "declararpila.h" DeclararPila::DeclararPila() totalnodos = 0; tope = NULL; int DeclararPila::getTotalNodos() //El atributo totalnodos es un contador de nodos que devuelve la cantidad de nodos almacenados en la pila. return totalnodos; Nodo* DeclararPila::getTope() return tope; bool DeclararPila::pilaLlena() if (gettotalnodos() == cantidad_nodos) return true; else return false;

bool DeclararPila::pilaVacia() if (gettotalnodos() == 0) return true; else return false; void DeclararPila::agregar(string dato) //Nodo* nuevo; if (! pilallena()) //Mientras que la pila no este llena se pueden agregar nodos. Nodo* nuevo = new Nodo(); //Se crea una nueva instancia de la clase nodo. nuevo->setdato(dato); //Al nodo nuevo en el campo de información se le agrego el dato. nuevo->setsiguiente(gettope()); //El apuntador del nuevo nodo apunta al que esta de tope (cabeza). tope = nuevo; //Se asigna que el tope será en nuevo nodo insertado. totalnodos = totalnodos+1; //Se incrementa el contador de nodos en uno. void DeclararPila::quitar() Nodo* temp; //Apuntador de la clase nodo para almacenar temporalmente el nodo a eliminar (tope). if (! pilavacia()) //Mientras que la pila no este vacía se pueden eliminar nodos. temp = gettope(); //Se asigna temporalmente el tope de la pila a el apuntador temp. tope = tope->getsiguiente(); //Ahora el tope será el nodo que que sigue al que estaba de tope. delete temp; //Se elimina temp. totalnodos = totalnodos-1; //El contador de nodos se decremento en uno. string DeclararPila::valorTope() return tope->getdato(); //Retorna la información que tiene el nodo del tope en el campo dato. void DeclararPila::limpiarPila() //Implementación del método que elimina todos los nodos de la pila. while (! pilavacia()) quitar(); DeclararPila::~DeclararPila() limpiarpila(); Fichero main.cpp #include "declararpila.h" int menu(); //Método para asignar un menú de opciones. void mostrarpila(declararpila* pila); //Método para mostrar los datos de la pila. int main() int opc; string dato; DeclararPila* pila = new DeclararPila();

do opc = menu(); switch(opc) case 1: cout << "\n AGREGAR DATOS A LA PILA \n"; cout << "Digite el dato que quiere agregar a la Pila: "; cin >> dato; if (! pila->pilallena()) pila->agregar(dato); else cout << " ---> La pila esta llena, No puede agregar mas elementos"; case 2: cout << "\n ELIMINAR DATOS DE LA PILA \n"; if (! pila->pilavacia()) pila->quitar(); else cout << "---> La pila esta vacia, No pueden quitar datos"; case 3: cout << "\n MOSTRAR DATOS DE LA PILA \n"; case 4: cout << "\n VACIAR LA PILA - BORRAR TODOS LOS ELEMENTOS \n"; pila->limpiarpila(); cout << "Se eliminaron los datos de la pila..."; cout << "\n \n"; case 5:

while(opc!= 5); int menu() int opcion = 0; cout << "\n IMPLEMENTACION DE PILAS - OPCION DEL MENU \n"; cout << "\n1. Agregar Datos a la Pila\n"; cout << "2. Eliminar Datos de la Pila\n"; cout << "3. Mostrar Datos de la Pila\n"; cout << "4. Vaciar la Pila\n"; cout << "5. Salir\n"; do cout << "\nseleccione una opcion del 1 al 5: "; cin >> opcion; while(opcion <= 0 opcion > 5); return opcion; void mostrarpila(declararpila* pila) //Así se mueven los elementos de la pila, siempre por el tope. cout << "\nelementos de la pila: \n \n"; //Objetos de la clase DeclararPila, para crear una pila temporal en donde almacenar los datos. DeclararPila* temp = new DeclararPila(); while (! pila->pilavacia()) //Mientras la pila no este vacía se muestran sus datos. cout << "---> " << pila->valortope() << "\n"; temp->agregar(pila->valortope()); //Se Agrega a una pila temporal el valor del tope de la pila actual. pila->quitar(); //Se elimina el tope de la pila actual, para pasar al siguiente elemento. //Posteriormente se copia nuevamente la pila temporal hasta la pila original. while (! temp->pilavacia()) pila->agregar(temp->valortope()); //Se agrega a la pila original el valor del tope de la pila temporal. temp->quitar(); //Se elimina el tope de la pila temporal, para pasar al siguiente elemento.