1. El Tipo Abstracto de Datos.
|
|
|
- Juana Ortíz Acuña
- hace 8 años
- Vistas:
Transcripción
1 Tipo Abstracto de s TAD Pila y TAD Cola 1. El Tipo Abstracto de s. 2. Definición de un TAD Pila. 3. Operaciones sobre el TAD Pila. 4. Implementación dinámica del TAD Pila en C. 5. Definición de un TAD Cola. 6. Operaciones sobre el TAD Cola. 7. Implementación dinámica del TAD Cola en C. 8. Aplicaciones del TAD Pila y del TAD Cola. 9. Ejercicios. Página 1
2 Tipos Abstractos de s, TAD Pila y TAD Cola 1. El Tipo Abstracto de datos El Tipo Abstracto de s o simplemente TAD, es una característica que proveen algunos lenguajes de programación. Un TAD se diferencia de los tipos de datos básicos por ser un tipo de dato definido por el programador similar a las estructuras y registros. Sin embargo, va más allá del hecho de solo almacenar datos, también están implícitas las operaciones de manipulación, almacenamiento y lógica de funcionamiento. Un Tipo Abstracto de s es un modelo con un número de operaciones que afectan a ese modelo. Los TAD proporcionan numerosos beneficios al programador y se pueden resumir en: Permiten una mejor conceptualización y modelado del mundo real. Mejora la representación y la comprensibilidad Mejoran la robustez del sistema. Además, cuando se implementan por medio de Programación Orientada a Objetos (POO): Mejoran el rendimiento y las prestaciones para lenguajes tipeados optimizando el tiempo de compilación. Separan la implementación de la especificación. La mejora y modificación de la implementación no afecta a la interfaz pública del Tipo Abstracto de. Permiten la extensibilidad del sistema. Los componentes de software son reutilizables y más fáciles de crear y mantener. Recogen la mejor semántica del tipo. Los Tipos Abstractos de s agrupan las operaciones y la representación de atributos o propiedades. Para comprender estos conceptos, lo mejor es llevarlos a la práctica. No todos los lenguajes de programación disponen del tipo de dato número complejo y de las operaciones básicas que pueden realizarse con este tipo de dato. Entonces, sería muy interesante crear el tipo de dato que almacene un número complejo y definir las operaciones que se pueden realizar sobre los complejos. Un número complejo tiene la siguiente forma: i parte real y parte imaginaria Para almacenar los datos de este número complejo se puede utilizar una estructura que contenga dos campos: Numero Real Imaginario Algunas de las operaciones que se pueden efectuar con los números complejos son la suma y la resta. La condición para realizar estas operaciones es que se opera la parte real y la parte imaginaria de forma separada. Entonces si tenemos dos números complejos la suma y la resta se realizarán de la siguiente manera: Página 2
3 Computación para Ingenierías II Ing. Franz Mercado Lorberg Suma i i i Resta i i i La implementación para el almacenamiento y operaciones de los números complejos con la programación estructurada en C es: #include <stdio.h> // Definición de la estructura struct Complejo float Real; float Imaginario; ; // Prototipos de funciones struct Complejo Carga_s( void ); struct Complejo Suma(struct Complejo Num1, struct Complejo Num2 ); struct Complejo Resta(struct Complejo Num1, struct Complejo Num2 ); void Muestra(struct Complejo Num ); void main( void ) // Declaración de tres variables de tipo estructura Complejo struct Complejo Numero1, Numero2, Resultado; Numero1 = Carga_s(); Numero2 = Carga_s(); Resultado = Suma( Numero1, Numero2); printf("\n\nla suma de: "); Muestra( Numero1 ); printf("\ny de: "); Muestra( Numero2 ); printf("\nda como resultado: "); Muestra( Resultado ); Resultado = Resta( Numero1, Numero2); printf("\n\nla resta de: "); Muestra( Numero1 ); printf("\ny de: "); Muestra( Numero2 ); printf("\nda como resultado: "); Muestra( Resultado ); Página 3
4 Tipos Abstractos de s, TAD Pila y TAD Cola struct Complejo Carga_s( void ) struct Complejo Num; printf("\nintroduzca la parte real del complejo:\n"); scanf("%f", &Num.Real ); printf("introduzca la parte imaginaria del complejo:\n"); scanf("%f", &Num.Imaginario ); return Num; struct Complejo Suma(struct Complejo Num1, struct Complejo Num2 ) struct Complejo Res; Res.Real = Num1.Real + Num2.Real; Res.Imaginario = Num1.Imaginario + Num2.Imaginario; return Res; struct Complejo Resta(struct Complejo Num1, struct Complejo Num2 ) struct Complejo Res; Res.Real = Num1.Real - Num2.Real; Res.Imaginario = Num1.Imaginario - Num2.Imaginario; return Res; void Muestra(struct Complejo Num ) if ( Num.Imaginario >= 0 ) printf("%5.2f + %5.2fi", Num.Real, Num.Imaginario ); else printf("%5.2f - %5.2fi", Num.Real, -Num.Imaginario ); 2. Definición de un TAD Pila Este Tipo Abstracto de s permite almacenar datos de acuerdo a la siguiente lógica: Último en entrar, Primero en Salir (en inglés es LIFO Last In First Out). En la vida real podemos apreciar este comportamiento cuando se apilan elementos del mismo tipo, por ejemplo una pila de platos. Cuando se apila un nuevo plato este irá en la cima de los anteriores platos. Cuando se saca un plato para lavarlo, lógicamente saldrá el plato que se encuentra en la cima, sino se romperá la estructura de apilamiento de platos y lo más probable es que se rompan los platos también... En inglés una Pila se denomina stack. Página 4
5 Computación para Ingenierías II Ing. Franz Mercado Lorberg La imagen siguiente muestra una pila de platos: C B A Los platos están rotulados para identificarlos mejor. El plato C se encuentra en la cima de la pila. Importante: El elemento que se encuentra en la cima se denomina el de la pila. 3. Operaciones sobre un TAD Pila Existen dos operaciones fundamentales en el TAD Pila: Apilar consiste en agregar un nuevo elemento a la pila. Esta operación se conoce en inglés como Push. Des-apilar consiste en quitar de la pila el elemento que se encuentra al. Esta operación se conoce en inglés como Pop. Importante: La pila inicialmente está vacía. Veamos con un ejemplo como funciona el apilamiento: (Paso 1) (Paso 2) (Paso 3) (Paso 4) C B B A A A La pila inicialmente está vacía. No existe. Se agrega el primer elemento. Por ser el único elemento, A se convierte en el tope de la pila. Se agrega el segundo elemento. B se ubica encima de A y se convierte en el nuevo tope. Se agrega el tercer elemento. C se ubica encima de B y se convierte en el nuevo tope. En general el nuevo elemento que va a ingresar a la pila se ubica por encima del y además se convierte en el nuevo. La única excepción es entre el primer y segundo paso donde no existe debido a que la pila está vacía. Página 5
6 Tipos Abstractos de s, TAD Pila y TAD Cola Veamos con un ejemplo como funciona el des-apilamiento: (Paso 1) (Paso 2) (Paso 3) (Paso 4) C B B A A A La pila contiene elementos. El es C. Se quita el elemento C que está en el. El nuevo tope es B que es el elemento anterior a C. Se quita el elemento B que está en el. El nuevo tope es A que es el elemento anterior a B. Se quita el elemento A que está en el. No hay nuevo pues la Pila se ha vaciado. En general el elemento que va a quitar de la pila es el que está en el y elemento anterior se convierte en el nuevo. La única excepción es cuando ya no hay más elementos para quitar. 4. Implementación dinámica del TAD Pila en C Para implementar el TAD Pila se va a requerir de estructuras que permitan modelar los elementos que componen la pila. Los elementos de la pila se denominan Nodos. La definición de la estructura constará de las siguientes partes: struct Nodo char ; struct Nodo *; ; Nodo Observe que el campo se utilizará para almacenar el elemento. El campo es un puntero que se utilizará para apuntar al anterior elemento de la pila (como el anterior elemento es de tipo struct Nodo, esta definición es apropiada). Para saber en todo momento cuál es el de la pila se utilizará un puntero global. Importante: Cuando un puntero no apunta a nada se utiliza NULL (el nulo de los punteros). Para especificar que pila está vacía se tendrá una expresión similar a: struct Nodo * = NULL; NULL Página 6
7 Computación para Ingenierías II Ing. Franz Mercado Lorberg El objetivo de esta combinación de punteros y estructuras para representar la pila A, B y C será similar al la siguiente imagen: De esta forma, se entiende que el elemento que está en el es. Que el elemento anterior a es y el elemento anterior a es. Importante: Se ha utilizado una para representar el hecho de que no existe un elemento anterior a. Esta equis se implementará en el código como un puntero nulo (NULL). Ahora que se ha comprendido como se va a implementar el TAD Pila en C, veamos el código: #include <stdio.h> // Definición de la estructura struct Nodo char ; struct Nodo *; ; // Puntero global que indica donde está el. // Inicialmente la pila está vacía, entonces apunta a NULL. struct Nodo * = NULL; // Prototipos de funciones void Inserta Pila( char Letra ); void Muestra( void ); void main( void ) // Inserta algunos elementos en el TAD Pila Inserta Pila(); Inserta Pila(); Inserta Pila(); // Despliega todos los elementos almacenados en el TAD pila Muestra(); Página 7
8 Tipos Abstractos de s, TAD Pila y TAD Cola // Funciones para el manejo del TAD Pila void Inserta Pila( char Letra ) struct Nodo *; = (struct Nodo*) malloc(sizeof(struct Nodo)); // Verifica si pudo reservar espacio en la memoria if ( == NULL ) return; // Si no pudo sale de la función else // Si pudo reservar, carga el nodo -> = Letra; -> = NULL; // Si no hay el nuevo se convierte en // el nuevo. Si ya había un, se lo // enlaza como anterior elemento y el // se convierte en el nuevo. if ( == NULL ) = ; else -> = ; = ; void Muestra(void) struct Nodo *Aux; // Si no hay no se muestra nada, sino se recorre el // TAD Pila y se muestran los elementos que lo componen. if ( == NULL ) printf("\nel TAD Pila esta vacío..."); else printf("\nel TAD Pila está compuesto por:\n"); Aux = ; while( Aux!= NULL ) printf("\nelemento: %c", Aux->); Aux = Aux->; Gráficamente se representaría como: Nodo Definición del molde, modelo ó plantilla Página 8
9 Computación para Ingenierías II Ing. Franz Mercado Lorberg En base a la definición del modelo se crea la variable global puntero del tipo Nodo. Inicialmente apunta a NULL porque el TAD Pila está vacío. NULL (Paso 1) Cuando se llama a la función Inserta Pila( ) con el valor, se intenta reservar un espacio de memoria. En caso de tener éxito la variable queda apuntado al nuevo espacio. NULL El valor está almacenado en la variable Letra, así es que se asigna Letra al campo apuntado por. El campo se llena con un NULL pues aún no se ha determinado si existe un elemento anterior. NULL Luego se pregunta si el es igual a NULL. Si esto se cumple es porque el TAD Pila está vacío y el nuevo elemento debe convertirse en el nuevo. (Paso 2) Al llamar a la función Inserta Pila( ) con el valor, se intenta reservar un espacio de memoria. En caso de tener éxito la variable queda apuntado al nuevo espacio. Página 9
10 Tipos Abstractos de s, TAD Pila y TAD Cola El valor está almacenado en la variable Letra, así es que se asigna Letra al campo apuntado por. El campo se llena con un NULL pues aún no se ha determinado si existe un elemento anterior. Luego se pregunta si el es igual a NULL. Si esto NO se cumple es porque el TAD Pila ya contiene uno o más elementos. Así es que hay que enlazar el campo anterior de con el. Ahora se tiene un nuevo elemento que está por encima de los demás, el puntero tendrá que desplazarse al mismo lugar donde apunta. (Paso 3) Al llamar a la función Inserta Pila( ) con el valor, se intenta reservar un espacio de memoria. En caso de tener éxito la variable queda apuntado al nuevo espacio. Página 10
11 Computación para Ingenierías II Ing. Franz Mercado Lorberg El valor está almacenado en la variable Letra, así es que se asigna Letra al campo apuntado por. El campo se llena con un NULL pues aún no se ha determinado si existe un elemento anterior. Luego se pregunta si el es igual a NULL. Si esto NO se cumple es porque el TAD Pila ya contiene uno o más elementos. Así es que hay que enlazar el campo anterior de con el. Ahora se tiene un nuevo elemento que está por encima de los demás, el puntero tendrá que desplazarse al mismo lugar donde apunta. Finalmente el TAD Pila contiene C, B y A. Página 11
12 Tipos Abstractos de s, TAD Pila y TAD Cola Importante: Seguramente ha notado que la variable desaparece cada vez. Esto se debe a que es una variable local y cuando termina de ejecutarse la función Inserta Pila( ) donde ha sido declarada, la variable se descarga de la memoria. Para desplegar los elementos almacenados en el TAD Pila, se utiliza una variable local de tipo puntero a estructura Aux que comienza en el lugar donde está el. Aux Se emplea un ciclo para ir desplazando Aux a través del TAD. Cada vez que se ejecuta la instrucción: Aux = Aux->; Provoca que Aux vaya al nodo anterior. Aux En determinado momento el puntero Aux saltará a NULL (sale fuera de la estructura). Esto causará que el bucle o ciclo while se detenga: while( Aux!= NULL ) Aux NULL Página 12
13 Computación para Ingenierías II Ing. Franz Mercado Lorberg 5. Definición de un TAD Cola Este Tipo Abstracto de s permite almacenar datos de acuerdo a la siguiente lógica: Primero en entrar, Primero en Salir (en inglés es FIFO First In First Out). En la vida real podemos apreciar este comportamiento cuando se realiza una cola de personas que desean ser atendidas por un cajero en el banco. Cuando el cajero atiende a una persona, esta será la que se encuentra al inicio de la cola. Cuando una nueva persona llega, deberá ubicarse al final de la cola sino romperá la estructura de cola y es posible que las personas que estaban primero se molesten y quieran tomar represalias verbales ó físicas con el nuevo En inglés una Cola se denomina queu. 6. Operaciones sobre el TAD Cola Existen dos operaciones fundamentales en el TAD Cola: Agregar Sacar un nuevo elemento a la cola. El nuevo elemento va al final de la cola a menos que sea el único y automáticamente será el inicio de la cola. un elemento existente de la cola. El elemento que sale es el primero de la cola. La única excepción es que no existan elementos en la cola. Importante: La cola inicialmente está vacía. 7. Implementación dinámica del TAD Cola en C La implementación el TAD Cola también requerirá de estructuras que permitan modelar los elementos que componen la cola. Los elementos de la cola también se denominan Nodos. La definición de la estructura constará de las siguientes partes: struct Nodo char ; struct Nodo *Sig; ; Nodo Sig Observe que el campo se utilizará para almacenar el elemento. El campo Sig es un puntero que se utilizará para apuntar al siguiente elemento de la cola (como el siguiente elemento es de tipo struct Nodo, esta definición es apropiada). Página 13
14 Tipos Abstractos de s, TAD Pila y TAD Cola Para saber en todo momento cuál es el Inicio de la cola se utilizará un puntero global. Para especificar que la cola está vacía se tendrá la expresión: struct Nodo *Inicio = NULL; Inicio NULL Si se insertan los elementos A, B y C en un TAD cola se tendrá la siguiente imagen: Inicio Sig Sig Sig De esta manera, se entiende que el elemento que está en al inicio es. Que el siguiente elemento después de es y el siguiente elemento después de es. Importante: Se ha utilizado una para representar el hecho de que no existe ningún elemento después de. Esta equis se implementará en el código como un puntero nulo (NULL). Vamos al código: #include <stdio.h> // Definición de la estructura struct Nodo char ; struct Nodo *Sig; ; // Puntero global que indica donde está el Inicio. // Inicialmente la cola está vacía, entonces Inicio apunta a NULL. struct Nodo *Inicio = NULL; // Prototipos de funciones void Inserta Cola( char Letra ); void Muestra( void ); void main( void ) // Inserta algunos elementos en el TAD Cola Inserta Cola(); Inserta Cola(); Inserta Cola(); // Despliega todos los elementos almacenados en el TAD cola Muestra(); Página 14
15 Computación para Ingenierías II Ing. Franz Mercado Lorberg // Funciones para el manejo del TAD Cola void Inserta Cola( char Letra ) struct Nodo *, *Ultimo; = (struct Nodo*) malloc(sizeof(struct Nodo)); // Verifica si pudo reservar espacio en la memoria if ( == NULL ) return; // Si no pudo sale de la función else // Si pudo reservar, carga el nodo -> = Letra; ->Sig = NULL; // Si no hay Inicio el nuevo se convierte en // el nuevo Inicio. Si ya había Inicio, hay que // desplazarse hasta el último elemento y enlazar // el último con el. if ( Inicio == NULL ) Inicio = ; else // Desplaza Ultimo hasta el // último elemento Ultimo = Inicio; while( Ultimo->Sig!= NULL ) Ultimo = Ultimo->Sig; // Enlaza el último con el nuevo Ultimo->Sig = ; void Muestra(void) struct Nodo *Aux; // Si no hay Inicio no se muestra nada, sino se recorre el // TAD Cola y se muestran los elementos que lo componen. if ( Inicio == NULL ) printf("\nel TAD Cola esta vacío..."); else printf("\nel TAD Cola está compuesto por:\n"); Aux = Inicio; while( Aux!= NULL ) printf("\nelemento: %c", Aux->); Aux = Aux->Sig; Página 15
16 Tipos Abstractos de s, TAD Pila y TAD Cola 8. Aplicaciones del TAD Pila y del TAD Cola Una de las aplicaciones más típicas del TAD Pila es almacenar los elementos de de que consta una expresión aritmética que está formada por operadores y operandos, con el fin de evaluar el valor numérico de dicha expresión. Para una explicación completa de este método de evaluación lea el texto Estructura de s. Algoritmos y abstracción y objetos de Luís Joyanes Aguilar e Ignacio Zahonero, McGraw-Hill, 1999, página 215. Los TAD Cola son de carácter más general pues se pueden aplicar a sistemas de pedidos, sistemas de inventarios, sistemas de atención de clientes (bancos e instituciones donde es fundamental el orden de llegada) e inclusive adaptar el comportamiento de la cola a una cola de prioridades. Para tener una mayor referencia busque información en el texto Estructura de s. Algoritmos y abstracción y objetos de Luís Joyanes Aguilar e Ignacio Zahonero, McGraw-Hill, 1999, página Ejercicios Resuelva los siguientes problemas: 1. Registre en un TAD Pila los datos: 33, 44, 11, 77, 55. Implemente las funciones requeridas para extraer un dato del TAD Pila y encontrar el dato más pequeño del TAD. Al extraer un dato, se elimina el nodo pero se retorna el valor numérico que se almacenaba en el nodo. 2. Almacene N sueldos (float) en un TAD Cola. Calcule cuanto se debe pagar por concepto de sueldos sin impuestos y cuanto se debe retener por concepto de impuestos. Considere los impuestos RC-IVA (13%) e IT (3%) que se aplican a todos los sueldos. 3. Registre en un TAD Pila los datos: 1, 2, 3, 4, 5, 6. Implemente las funciones requeridas para extraer todos los datos de la pila y enviarlos a un TAD Cola. Muestre los tres primeros datos del TAD Cola para verificar que los datos se han enviando apropiadamente. 4. Seleccione un tipo abstracto de datos para guardar en un calendario N nodos. Cada nodo podrá almacenar una fecha y una actividad que se realizará en esa fecha. Ej , Realizar la práctica de computación II , Examen de computación II. Cuando una actividad se cumpla deberá ser eliminada del calendario. 5. Implemente una aplicación que permita almacenar los siguientes datos que componen el registro de una persona: Nombre, edad y estatura. Ingrese N registros y luego muestre el contenido entero del TAD. 6. Elija el TAD apropiado para: a. Almacenar N ventas (deberá almacenar: Producto, precio y descuento). b. Mostrar las últimas tres ventas del día. c. Mostrar el contenido completo del TAD. d. Encontrar cuál fué la mayor de las ventas. Página 16
Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.
Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos. Con relación a la Estructura LISTA Indicar objetos reales que se puedan modelar con dicha estructura. Listas de Ordenes de visitas
Tema: Tipos Abstractos de Datos (TAD s) en C#.
Programación II. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Tipos Abstractos de Datos (TAD s) en C#. Objetivos Comprender el concepto Tipo Abstracto de Datos
ESTRUCTURAS DINÁMICAS DE DATOS (PILAS)
200 UNAN LEON Departamento de Computación Ingeniería en Sistema y Telemática Docente: Ing. Juan Carlos Antón S. Asignatura: Algoritmo y Estructuras de Datos ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) Pilas
Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México
Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos
UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS
UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS Curso 2008-09 Examen parcial APELLIDOS: NOMBRE: 1. (0.5 puntos) Enumera las características de un algoritmo
Estructura de Datos. Unidad de Aprendizaje: Unidad de Competencia II: Estructuras de Datos Lineales. M. en C. Edith Cristina Herrera Luna
Ingeniería en Computación Unidad de Aprendizaje: Estructura de Datos Unidad de Competencia II: Estructuras de Datos Lineales Marzo 2015 M. en C. Edith Cristina Herrera Luna ESTRUCTURAS DE DATOS Propósito
Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola
Objetivos Trabajar sobre el Tipo Abstracto de Datos Lista, reforzando el desacople entre especificación e implementación. Retomar las implementaciones vistas, como ser Listas Doblemente Encadenadas, Listas
Estructura de datos Colas
Estructura de Datos Estructura de datos Colas Temario Unidad II 2.1 Definición y operaciones 2.2 Implementación estática 2.3 Implementación dinámica 2.4 Colas de prioridad 2.5 Casos de estudio 1 Definición
PILAS. Prof. Ing. M.Sc. Fulbia Torres
S ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS PILAS Definición. Operaciones. Implementación secuencial. Aplicaciones. Ejemplos. Ejercicios. DEFINICIÓN Una PILA (o stack) es una estructura
Tema 5. Estructura de datos Pila
Tema 5. Estructura de datos Pila http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la
Estructuras Dinámicas de datos.
Estructuras Dinámicas de datos. Las estructuras dinámicas de datos son estructuras que crecen a medida que ejecuta un programa. Una estructura dinámica de datos es una colección de elementos llamadas nodos
Segundo Parcial de Programación 2 7 de junio de 2017
Instituto de Computación. Facultad de Ingeniería. Universidad de la República Segundo Parcial de Programación 2 7 de junio de 2017 Problema 1 (30 puntos) Considere un TAD T que permita almacenar a lo sumo
Tema: Tipos Abstractos de Datos (TAD s) en C++.
Programación II. Guía 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Tipos Abstractos de Datos (TAD s) en C++. Objetivos Específicos Explicar el concepto "Tipo Abstracto
IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++
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
ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) EN C
2013 ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) EN C Departamento de Computación UNAN-León TEMA 4: ESTRUCTURAS DINÁMICAS DE DATOS (PILAS) 4.1 INTRODUCCIÓN: En términos de listas lineales, una pila puede ser
UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES. 1. Pilas (Stacks)
UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES 1. Pilas (Stacks) Una pila es una coleccion de elementos en la que sólo se pueden insertar y eliminar datos por uno de los extremos de la lista. Al igual que
Estructuras Dinámicas
Departamento de Lenguajes yciencias de la Computación 4 Estructuras Dinámicas Contenido 1. Gestión dinámica de memoria. 2. El tipo puntero. 3. Operaciones con punteros. 4. Operaciones básicas sobre listas
ESTRUCTURAS DE DATOS Y ALGORITMOS
ESTRUCTURAS DE DATOS Y ALGORITMOS CURSO 2009 PRÁCTICO 8 Nota: al igual que en los prácticos 6 y 7, en los problemas que siguen se usarán los tipos lista y árbol binario, como tipos abstractos, cada uno
Tema 03: TAD Cola. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 03: TAD Cola M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Descripción del TAD Cola Especificación
Un hombre caminaba por el bosque cuando vió una zorra lisiada. " Cómo hará para alimentarse?", pensó.
Capitulo III Colas El camino del Tigre Un hombre caminaba por el bosque cuando vió una zorra lisiada. " Cómo hará para alimentarse?", pensó. En ese momento, se acercó un tigre, con un animal entre los
Tipos Recursivos de Datos
1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),
LISTAS ENLAZADAS FUNDAMENTOS TEORICOS
LISTAS ENLAZADAS FUNDAMENTOS TEORICOS Una lista enlazada es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta al siguiente elemento por un «enlace»
Tema 6. Gestión dinámica de memoria
Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, [email protected] Estructuras de datos y de la
Las FILAS. ING PEDRO BELTRÁN CANESSA Estructuras de Datos 1
Las FILAS Estructuras de Datos 1 LA FILA (Conceptos...) Es un contenedor que utiliza el protocolo FIFO (First In, First Out) o bien, PEPS (Primeras Entradas, Primeras Salidas) Entrada Salida Estructuras
Capítulo. Listas, pilas y colas en C. Contenido. Introducción
Capítulo 32 Listas, pilas y colas en C Contenido Listas enlazadas Clasificación de listas enlazadas Operaciones en listas enlazadas Inserción de un elemento en una lista Búsqueda de un elemento de una
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Implementaciones de pilas, colas y afines. Memoria dinámica.
Implementaciones de pilas, colas y afines. Memoria dinámica. 1 1 Departamento de Computación, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina Algoritmos y Estructuras de Datos II, segundo cuatrimestre
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 -
Trabajo práctico Nº 7 (Resolución de problemas Estructura: pila y cola). Realiza el programa de cada situación problemática. 1- Cargar en una pila n letras del abecedario.(n debe ser menor a 30) 2- En
Unidad I Tipos de Datos en C
Tipos de Datos en C 1. El concepto de los tipos de datos. 2. Tipos de datos básicos del C. 3. Modificadores de tipo. 4. Declaración de variables. 5. Inicialización de variables. 6. Declaración de identificadores
Tema 02: TAD Pila. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 02: TAD Pila M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Descripción
GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
TAD: Pila. TALLER: TAD Pila
TALLER: TAD Una pila (stack) es un conjunto de elementos del mismo tipo que solamente puede crecer o decrecer por uno de sus extremos. Una pila también se la conoce con el nombre de estructura de tipo
Programación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación
Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.
Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es
Estructura de datos y algoritmos. Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES
Estructura de datos y algoritmos Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES 4.1 Introducción 4.2 Ejemplos de TDA dinámicos lineales 4.3 Pilas 4.3.1
Introducción al lenguaje C
Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Colonia, Uruguay 15 de marzo de 2016 Programación 2 Introducción al lenguaje C 15 de marzo de 2016 1 / 34 Objetivos
Capitulo V Listas Enlazadas
Capitulo V Listas Enlazadas Muere lentamente, quien abandona un proyecto antes de iniciarlo, no preguntando de un asunto que desconoce o no respondiendo cuando le indagan sobre algo que sabe. Evitemos
ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C
2013 ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C Departamento de Computación UNAN-León TEMA 5: ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) 5.1 INTRODUCCIÓN: Las colas son secuencias de elementos caracterizadas
Apuntadores en C y C++
Apuntadores en C y C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Prof. Marcos A. Gil T. 8 de diciembre de 2004 1. Introducción Los apuntadores en C y C++ son una herramienta
Implementación de las Clases Pila, Cola, Lista y Arbol
1/1 Implementación de las Clases Pila, Cola, Lista y Arbol Josefina Sierra Santibáñez 28 de noviembre de 2017 2/1 Implementación de Estructuras de Datos Implementaremos cada estructura de datos en dos
Pilas, Colas. Andrea Rueda. Estructuras de Datos. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas
Pilas, Colas Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Quiz: STL Quiz: STL Standard Template Library (STL) std::vector - Arreglo dinámico,
Unidad III: Estructuras lineales
Unidad III: Estructuras lineales Listas En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos.
Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación
1 Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera Fundamentos de programación Agenda Caracteres y Cadenas Conversión de Datos Introducción a las funciones y procedimientos
Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz
Tema 8. Listas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat
Estructura de Datos: Lista. Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras. Autora: Prof.
Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras Estructura de Datos: Lista Autora: Lunes a viernes de 9 a 21 h. Torre Universitaria, Zabala 1837, primer nivel inferior.
1.2.4 Listas enlazadas
1.2.4 Listas enlazadas Las listas enlazadas son tipos de datos dinámicos que se construyen con nodos. Un nodo es un registro con al menos, dos campos, uno de ellos contiene las componentes y se le denomina
APUNTES PROII 2º PARCIAL.
APUNTES PROII 2º PARCIAL. MEMORIA DINÁMICA. Hay que distinguir entre: Estática: memoria que se reserva en tiempo de compilación. Dinámica: memoria que se reserva en tiempo de ejecución. 5 pasos: 1. Declaración
Laboratorio de Arquitectura de Redes. Punteros en lenguaje C
Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones
Tema 13: Apuntadores en C
Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción
UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.
Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.
Estructuras Enlazadas AyED UTN-BA
Funciones para estructuras enlazadas Sin Plantilla El Nodo Con plantilla para un dato genérico en info El Nodo struct Nodo1 int info; Nodo* sig; ; Nodo1* p1 = new Nodo1(); struct Nodo2 string info; Nodo*
Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y
Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y distribución. Listas Enlazadas Estructuras de datos dinámicas
Programación TADs Lineales Lista Pila Cola
Programación 2 7- TADs Lineales Lista Pila Cola 1 TAD LISTA 2 Definición Hemos visto la definición inductiva de listas. Más precisamente, definimos inductivamente los tipos Alista, para cualquier tipo
Biblioteca de templates. template <typename T> void eliminar(t arr[], int& len, int pos);
ALGORITMOS Y ESTRUCTURA DE DATOS Machete Oficial 2014 Operaciones sobre arrays Biblioteca de templates Función: agregar Agrega el valor v al final del array arr e incrementa su longitud len. void agregar(t
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION CICLO: 01/ 2012 Nombre de la Practica: Lugar de Ejecución: Tiempo Estimado: MATERIA: GUIA DE LABORATORIO #10 Programación
obtenidos a partir de los objetos que manipula. un nuevo paradigma de programación, La POO es Clases su forma de módulo.
(a) definición (b) elementos y notación (c) modelo de computación (d) ejecución de un sistema (e) exportación selectiva Clases Programación Orientada a Objetos DCIC UNS 2002 47 La POO es un nuevo paradigma
ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/
DECLARACION DE ESTRUCTURAS ESTRUCTURAS La estructura es una colección de variables, la cual puede poseer distintos tipos de datos (a diferencia de los arreglos que solamente pueden tener un solo tipo de
TIPO DE DATO ABSTRACTO (TDA)
TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet Actividad Extra Clases #include #include int binario(int
Hoja de ejercicios del Tema 9
Facultad de Informática Universidad Complutense Fundamentos de la programación Curso 2013 2014 Hoja de ejercicios del Tema 9 1. Sin ejecutarlo, qué mostraría el siguiente código? int x = 5, y = 12, z;
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Programación de sistemas Pilas y Colas
Programación de sistemas Pilas y Colas Departamento de Ingeniería Telemática 1 Contenidos Pilas (stacks) Colas (queues) Colas dobles (deques double-ended queues) 2 Pilas Estructura de datos lineal Inserción
Autoestudio 2: Variables y Operadores
Autoestudio 2: Variables y es Componentes de un programa Cuando escribimos en un lenguaje de programación tenemos que entender la sintaxis del lenguaje. A continuación empezaremos con la sintaxis básica
Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS
Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS ÍNDICE Listas enlazadas Pilas Colas DEFINICIÓN DEL TIPO LISTA
Apuntadores (Punteros)
Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable
Segundo parcial de Programación 2
Generalidades: Segundo parcial de Programación 2 a. La prueba es individual y sin material. b. La duración es 3hs. c. Sólo se contestan dudas acerca de la letra. 8 de Julio de 2016 d. Escriba las hojas
Pilas y Colas. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores
Pilas y Colas Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Pilas Estructura Operaciones Ejemplos de aplicación Implementación Colas Definición Operaciones
Arboles Binarios de Búsqueda en C++
Arboles Binarios de Búsqueda en C++ por CCG/Mayo-2014 Tema de Arboles Binarios de Búsqueda, como un poco de teoría para su mejor entendimiento seguidamente mostrare la implementación en lenguaje de programación
Tema: Funciones Virtuales y Polimorfismo.
Programación II. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Comprender que es ligadura e identificar sus tipos.
Tema: Funciones Virtuales y Polimorfismo.
Programación II. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Específicos Comprender que es ligadura e identificar
ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS)
2010 UNAN LEON Departamento de Computación Ing. En Sistemas Sabatino Docente: Ing. Karina Esquivel A. Asignatura: Practicas Profesionales. ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS) TEMA 3: ESTRUCTURAS DINÁMICAS
Cadena de caracteres. 1. Fundamentos de cadenas y caracteres
1. Fundamentos de cadenas y caracteres Cadena de caracteres Los caracteres son bloques de construcción fundamentales para los programas fuente. Un programa puede contener constantes de carácter. Una constante
Trabajo Práctico Nº 10 Estructuras Dinámicas: Pila y Cola.
Trabajo Práctico Nº 10 Estructuras Dinámicas: Pila y Cola. Objetivo: Interiorizarnos en la creación y en el manejo de estructuras Dinámicas (Pila y Cola) definidas por desarrollador. PILA Una PILA es una
UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.
Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.
directamente indirectamente
PUNTEROS EN C PUNTEROS Permiten simular el pasaje de parámetros por referencia. Permiten crear y manipular estructuras de datos dinámicas. Su manejo es de fundamental importancia para poder programar en
Universidad Don Bosco (UDB) Facultad de Ingeniería / Escuela de Computación
UNIDAD 6: APUNTADORES O PUNTEROS CONTENIDOS 6.1. Introducción a los apuntadores o punteros 6.1.1. Parámetros de dirección Parámetros de referencia 6.1.2. Apuntadores o punteros Diferencias entre una referencia
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 -
Trabajo práctico Nº 7 (Resolución de problemas Estructura: pila y cola). Realiza el programa de cada situación problemática. 1- Cargar en una pila n letras del abecedario.(n debe ser menor a 30) 2- En
ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA
ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA CONTENIDOS Definición de un algoritmo Tipos de datos Representaciones de un algoritmo Lenguaje natural Pseudocódigo
Algoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés
Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Índice general:. Modelo y Aplicación de Lista con Punto de Interés
Tema: Punteros.Puntero this en C#.
POO. Guía No.7 1 Tema: Punteros.Puntero this en C#. Facultad: Ingeniería Escuela: Computación Asignatura: Programación Orientada a Objetos Materiales y Equipo Computadora con el software C#. Guía Número
ASIGNATURA: ESTRUCTURA DE DATOS II
ASIGNATURA: ESTRUCTURA DE DATOS II Cód: 31-206 Régimen cuatrimestral Horas reloj semanales: 4 Horas teóricas: 15 Horas prácticas: 45 Horas totales: 60 Carrera: Sistemas 2016 FUNDAMENTOS: Un tipo de dato
Tema 5 Tabla de Símbolos
Traductores, Compiladores e Intérpretes 1 Tema 5 También se la llama tabla de nombres o tabla de identificadores y tiene dos funciones principales: - Efectuar chequeos semánticos. - Generación de código.
Tema 6: Memoria dinámica
: Programación 2 Curso 2013-2014 Índice 1 2 3 El tamaño es fijo y se conoce al implementar el programa Declaración de variables int i=0; char c; float vf[3]={1.0, 2.0, 3.0}; i c vf[0] vf[1] vf[2] 0 1.0
Para la Implementación Dinámica de listas: Se usa la asignación dinámica de memoria mediante punteros o referencias.
Tema: Listas simple encadenadas. Manejo de pilas y colas dinámicas Objetivos: Que los alumnos logren Capacidad para usar, en forma eficiente los diagramas UML básicos. Habilidad para identificar las distintas
Lenguaje C, tercer bloque: Funciones
Lenguaje C, tercer bloque: Funciones José Otero 1 Departamento de informática Universidad de Oviedo 28 de noviembre de 2007 Índice 1 Tipo puntero Concepto de puntero Operador dirección Operador indirección
TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación
TUTORIAL PSEINT Ing. Ronald Rentería Ayquipa Fundamentos de Programación PSEINT Página Oficial: http://pseint.sourceforge.net/ Es un software que interpreta pseudocódigo. Permite la generación de diagramas
