LISTAS, PILAS Y COLAS

Tamaño: px
Comenzar la demostración a partir de la página:

Download "LISTAS, PILAS Y COLAS"

Transcripción

1 1 LISTAS, PILAS Y COLAS Muchos algoritmos requieren una representación apropiada de los datos para lograr ser eficientes Esta representación junto con las operaciones permitidas se llama Estructura de Datos Casi todas permiten inserciones arbitrarias Varían en como permiten el acceso a los miembros Algunas permiten acceso y borrado arbitrarios Otras imponen restricciones tales como acceso al elemento más recientemente insertado o al menos recientemente insertado Por qué se necesitan estructuras de datos? Permiten la reutilización de componentes: Se definen interfaces simples con las operaciones disponibles y las diversas aplicaciones pueden utilizarlas sin tener en cuenta su implementación Todas las estructuras son fáciles de implementar si no se tiene en cuenta el rendimiento: Se pueden colocar componentes baratas en la fase de depuración y luego se pueden reemplazar por implementaciones con mejor rendimiento en tiempo y/o espacio Cuadro comparativo de Estructuras de Datos Estructura de Datos Acceso Comentarios Pilas Sólo el más reciente cima, O(1) Muy rápidas Colas Sólo el menos reciente quitarprimero, O(1) Muy rápidas Listas enlazadas Cualquier momento O(N) Arboles de búsqueda Tablas hash Colas de prioridad Cualquier momento por nombre o rango. O(log N) Cualquier momento por nombre O(1) buscarmin, O(1) eliminarmin, O(log N) Caso medio, también en el peor caso Casi seguro Insertar es O(1) en promedio, O(log N) en el peor. LISTAS ENLAZADAS Listas enlazadas simples DEFINICIÓN: OPERACIONES BÁSICAS: Crear Insertar un elemento Borrar un elemento Es un secuencia ordenada de nodos, donde cada nodo conoce a su nodo sucesor. OTRAS DE UTILIDAD: Longitud de una lista Determinación de igualdad de dos listas Etc.

2 2 OPERACIONES CON LISTAS ENLAZADAS Recorrido: Esta operación consiste en visitar cada uno de los nodos que forman la lista Inserción: Esta operación consiste en agregar un nuevo nodo a la lista. Se pueden considerar tres casos: * Insertar un nodo al inicio * Insertar un nodo antes o después de cierto nodo. * Insertar un nodo al final. Borrado: La operación de borrado consiste en quitar un nodo de la lista, redefiniendo las ligas que correspondan. Se pueden presentar cuatro casos: * Eliminar el primer nodo. * Eliminar el último nodo. * Eliminar un nodo con cierta información. *Eliminar el nodo anterior o posterior al nodo cierta con inf. Búsqueda: Esta operación consiste en visitar cada uno de los nodos, hasta ubicar un nodo con determinada característica, devolviendo su posición ESPECIFICACION DE LISTAS ENLAZADAS SIMPLES Especificación Modelo: Para poder representar esta estructura se consideran las clases SNode : que representa un nodo de la lista. SList : representa la secuencia ordenada de nodos. La clase SNode tiene dos atributos : valor : es el valor del nodo. value siguiente : es una referencia al nodo sucesor. next La clase SList, simplemente tiene un único atributo que representa el primer nodo de la lista, los restantes nodos se pueden conocer por la referencia al sucesor. Protocolo de mensajes Los mensajes que debería responder un nodo podrían ser: valor : retorna el valor del nodo. siguiente : retorna el nodo sucesor Los mensajes que debería responder una lista podrían ser: longitud : retorna la longitud de la lista. agregarelemento : agrega un elemento a la lista. borrarelemento : elimina un nodo de la lista. Se puede implementar el protocolo de mensajes de una lista en un nodo, pero no es correcto desde el punto de vista de objetos, por que un nodo es parte de una lista y la clase Lista utiliza los servicios que da la clase Nodo para poder implementar sus métodos. Interfaz Está incompleta Faltan las operaciones de eliminación: Eliminar primero, eliminar el siguiente de un nodo objeto

3 3 Implementación de Nodo class SNode { Object value; next; SNode SNode() { value = null; next = null; SNode(Object avalue) { value = avalue; next = null; public SNode next() { return next; public void next(snode nextnode) { next = nextnode; Clase Lista Simple import SNode; class SList {SNode firstnode; SList() { firstnode = null; public void addelement(object value) { if(firstnode == null) firstnode = new SNode(value); else { SNode aux = firstnode; while(aux.next()!= null) aux = aux.next(); aux.next(new SNode(value)); public int size() { int size = 0; SNode aux = firstnode; while(aux!= null) { aux = aux.next(); size ++; return size; public Object elementat(int index) { if((index <= size()) && (index > 1)) { SNode aux = firstnode; while(index > 1) { aux = aux.next(); index ; return aux.value(); else return null;

4 4 public boolean equals(slist alist) { if(size() == alist.size()) {int index = 1; SNode aux = firstnode; boolean equals = true; while((aux!= null) && equals) {if((alist.elementat(index)).equals(aux.value()) ) {index ++; aux = aux.next(); else equals = false; return equals; return false; public boolean contains(object aobject) { SNode aux = firstnode; While ((aux!= null) && (! aobject.equals(aux.value()))) aux = aux.next(); if( aux == null) return false; else return true; public Object firstelement() { return firstnode.value(); public Object lastelement() { SNode aux = firstnode; while(aux.next!= null) aux = aux.next(); return aux.value(); Ver que quien lo invoca verificará que la lista no sea vacía public void atput(int index,object value) { if((index > 0) & (index <= size())) { SNode aux = firstnode; for(int i = 0; i < index; i++) aux = aux.next(); SNode newnode = new SNode(value); if( aux.next()!= null) newnode.next(aux.next()); aux.next(newnode); Notar que si en Snode se dispone un constructor que inicia los dos atributos directamente, la parte marcada puede codificarse como: aux.next (new Snode ( value, aux.next))

5 5 PILAS Estructura de datos en la cual el acceso está limitado al elemento más recientemente insertado El último elemento añadido a la pila es colocado en la cima, donde es accedido directamente, mientras que los elementos que llevan más tiempo son más difíciles de acceder Operaciones naturales: insertar (apilar) eliminar (desapilar) buscar (cima) Puede ser utilizada para dar vuelta a una lista de elementos Estructura LIFO: Last In, First Out (último en entrar, primero en salir) Interfaz pila: Métodos principales Object pop() :Elimina el elemento en la cima de la pila y devuelve el objeto que contiene void push(object elem) :Inserta un elemento en la cima de la pila Métodos auxiliares Object top() boolean isempty() int size() :Devuelve el elemento que hay en la cima de la pila sin eliminarlo de la misma. :Devuelve true si la pila está vacía y false en caso contrario :Devuelve el tamaño de la pila Implementación basada en Arrays public class ArrayStack implements Stack { //comienzo de la clase public static final int CAP=1000; private int capacity; private Object S[]; private int top=1; public ArrayStack(){this(CAP); public ArrayStack(int cap){ capacity=cap; S=new Object[capacity]; public int size() {return (top+1); public boolean isempty() {return (top<0); public Object top()throws StackEmptyException{ if (isempty()) throw new StackEmptyException("vacio"; return S[top]; public void push(object o) throws StackFullException { if (size()==capacity) throw new StackFullException("lleno"); S[++top]=o; public Object pop() throws StackEmptyException { Object el; if (isempty()) throw new StackEmptyException("vacio"; el=s[top]; S[top]=null; return el; //fin de la clase

6 6 Interfaz: Una Pila se puede definir como una subclase de la clase SList Para esta implementación se deberían redefinir los métodos heredados para dar el comportamiento adecuado Implementación alternativa: se utiliza el concepto de agregación. Jerarquía de clases de una Pila Implementación basada en Listas class Stack { SList list; Stack() { list = new SList(); public void push(object aobject) { list.addelement(aobject); public boolean isempty() { return list.isempty(); public Object pop() { if (! isempty()) { Object re = list.lastelement(); list.removeelement(re); return re; else return null; Cada operación debería tardar una cantidad constante de tiempo en ejecutarse, independientemente del número de elementos apilados ( Ej: Tomar el diario de hoy en una pila). Además es de O(1) ALGUNAS APLICACIONES DE PILAS: En COMPILADORES ( Análisis sintáctico de lenguajes de programación) Análisis de símbolos equilibrados Implementación de llamadas a procedimientos Evaluación de expresiones precedencia de operadores Análisis sintáctico I Símbolos equilibrados con posibles de anidamientos : ( ), begin end 1 Construir pila vacía 2 Leer símbolo hasta el final del fichero a Si es símbolo de apertura, apilarlo en la pila b Si es de terminación y la pila está vacía, error c En otro caso, desapilar. Si el desapilado no es el de apertura correspondiente, hay error 3 Al finalizar el fichero, si la pila no está vacía, hay error Ejemplo: { [ ( ) ( ) ] ( ) { [ ( [ ( [ { ( { { [ { [ { { { {

7 7 ESQUELETO DE LA CLASE AnalizadorJava PARA EL PROGRAMA DE COMPROBACIÓN DE SIMBOLOS EQUILIBRADOS Los objetos a apilar contienen un token y un número de línea II Implementación de llamadas a procedimientos Cuando se llama a un nuevo método, deben salvarse las variables locales del llamador (para no sobreescribir) y también la posición actual dentro de la rutina llamante. Caso particular : métodos recursivos III Evaluación de expresiones precedencia de operadores Empleando un mecanismo directo de evaluación: Notación postfija Ejemplo: ^ 5 * 3 * 6 / 7 ^ 2 ^ 2 Para evitar confusión: (1 2) ( ( ( 4 ^ 5) * 3 ) * 6 ) / ( 7 ^ ( 2 ^ 2 ) ) ) Con notación postfija: ^ 3 * 6 * ^ ^ / Pila La pila es utilizada por la máquina postfija para la evaluación También se emplea pila para convertir una expresión infija en postfija: Cuando se encuentra un operando, se pasa directo a la salida. Cuando se encuentra un operador, debe esperar a encontrar su segundo operando Los operadores pendientes se pueden almacenar de forma apropiada en una pila Entrada y salida de la pila: Paréntesis izquierdo: se apila directamente Paréntesis derecho: Desapilar símbolos hasta encontrar ( Operador: Desapilar todos los símbolos hasta encontrar un símbolo de menor precedencia o un símbolo de igual precedencia con asociatividad derecha. Luego apilarlo. Fin de entrada: Desapilar el resto de símbolos

8 8 Convertir una expresión infija en postfija: E. Infija: 1 2 ^ 3 ^ 3 ( * 6 ) * 7 E. Postfija: ^ ^ * + 7 * ^^ 4 5 6* + 7 * ^ ^ ^ ^ ^ ^ ( ( + ( * + ( * + ( * * 1 2 ^ 3 ^ 3 ( * 6 ) * 7 Paréntesis izquierdo: se apila directamente Paréntesis derecho: Desapilar símbolos hasta encontrar ( Operador: Desapilar todos los símbolos hasta encontrar un símbolo de menor precedencia o un símbolo de igual precedencia con asociatividad derecha. Luego apilarlo Fin de entrada: Desapilar el resto de símbolos Además de la pila se requiere una Tabla de Precedencias para decidir las eliminaciones de la pila Este análisis necesita un tiempo lineal y un solo recorrido de la entrada, utilizando dos pilas

9 9 COLAS Estructura de datos en la cual se puede encontrar directamente y/o eliminar el elemento más antiguo y solo se puede insertar después del elemento más reciente Se puede identificar un frente y un final Operaciones naturales: insertar (al final) eliminar (al frente) primero (acceder elemento de frente) Ejemplos: trabajos que se mandan a impresión. Estructura FIFO: First In, First Out (primero en entrar, primero en salir) Interfaz: Una Cola se puede definir como class Queue import SNode; class Queue {SNode lastnode; SNode firstnode; Queue () { firstnode = lastnode = null; public void pushelement(object value) { if(firstnode == null) lastnode =firstnode = new SNode(value); else { lastnode = lastnode.next= new SNode(value)); Todas las operaciones básicas sobre las colas tardan un tiempo O (1) Colas Dobles Es una estructura similar a una cola, excepto que está permitido el acceso por ambos extremos La clase Cola Doble puede plantearse como subclase de Cola. Los métodos de Cola Doble son: Insertar al principio Insertar al final Eliminar al principio Eliminar al final Insertar al final y Eliminar al principio, son heredados Observar que la eliminación de nodos al final de una lista no está soportada de manera eficiente

10 10 IMPLEMENTACIONES DE PILAS Y COLAS Ambos tipos de estructuras pueden implementarse empleando un vector o una lista enlazada En ambos casos las operaciones se ejecutan en tiempo constante, son muy rápidas En otros lenguajes de programación, la implementación basada en vectores emplea más memoria pero menos tiempo que la implementación con listas enlazadas En Java no es relevante, debido al tratamiento de los objetos con referencias ( cada elemento de un vector es solo una referencia) OTROS TIPOS DE LISTAS ENLAZADAS Listas Circulares Listas enlazadas dobles Listas Circulares dobles Listas con cabecera ( para cada caso anterior) Listas enlazadas ordenadas LISTAS CIRCULARES Una desventaja de las listas lineales: dado un puntero p a un nodo de la lista, no se puede alcanzar cualquier otro nodo que preceda al nodo p Ventajas: Si se modifica la estructura : el next en el último nodo contiene un puntero al primer nodo, en lugar de ser nulo ( Lista Circular) Desde cualquier nodo de la lista es posible llegar a cualquier otro nodo de la lista No hay ningún nodo natural com primero o último. Convención: El puntero externo de la lista apunta al último nodo Pueden utilizarse para representar pilas o colas La pila puede considerarse como un puntero al último nodo de la lista circular, siendo que el primer nodo es la parte superior de la pila Al utilizar una lista circular, una cola puede especificarse mediante un solo puntero al nodo final de la cola y el siguiente nodo es el primero Pensar en la implementación de una cola con lista circular y escribir los métodos push y remove Algunas particularidades de listas circulares. Ejemplo: Si la lista tiene un solo nodo, este nodo tiene siguiente y por tanto debe reverse la operación EliminarSiguiente

11 11 LISTAS CON NODO CABECERA Una lista con nodo de cabecera es aquella en la que el primer nodo de la lista contendrá en su campo dato algún valor que lo diferencie de los demás En el caso de utilizar listas con nodo de cabecera, usaremos el apuntador CAB para hacer referencia a la cabeza de la lista. Un lista con nodo cabecera satisface el requerimiento: cada nodo que contiene un elemento tiene un nodo anterior. Esto simplifica las operaciones de eliminación e inserción, pues no hay que tratar los casos especiales para listas vacías. Se simplifica el código y aumenta la velocidad a cambio de un despreciable aumento de espacio ( Para algunos TRUCO SUCIO: celdas ficticias) En una lista circular, la ejecución del recorrido desde un nodo cualquiera requiere saber cuando se ha recorrido toda la lista. Esto puede lograrse con otro puntero externo estacionario ( al primer nodo de la lista) o bien trabajando con un nodo cabecera. LISTAS DOBLES ENLAZADAS En las listas enlazadas simples es fácil avanzar, pero la implementación de retroceder no puede ser eficiente con una sola referencia siguiente. En algunas aplicaciones esto es crítico ( Editores de texto) Se puede modificar la estructura de manera que cada nodo tenga una referencia al siguiente y al anterior (Lista doblemente enlazada), con o sin cabecera No obstante, éstas no soportan de forma eficiente algunas operaciones. LISTAS DOBLES ENLAZADAS CIRCULARES Se puede modificar para que principio y fin estén conectados entres sí ( Lista dob. enl. Circular) Así se tienen recorridos y búsquedas en forma sencilla en ambos sentidos Ya no se usa nil para decidir si un avance lleva al final de la lista Notar que eliminar un nodo aux de la lista puede codificarse como: aux. prev.next = aux. next; aux.next. prev = aux.prev LISTAS ENLAZADAS ORDENADAS Es una lista en la que los elementos se guardan en forma ordenada. La diferencia fundamental en esta estructura es la rutina de inserción También se modifica la búsqueda

12 12 Un modelo CONSIDERACIONES DE MODELADO Iteradores: patrón de diseño de software que encapsula métodos que permiten recorrer los elementos de una colección La diferencia fundamental en esta estructura es la rutina de inserción Una lista es un contenedor de objetos, la cual almacena cada elemento en una posición y mantiene esas posiciones dispuestas en orden lineal. Un contenedor es una estructura que almacena y organiza una colección de objetos, llamados los elementos del contenedor y proporciona acceso a los mismos a través de los métodos de un TAD. Pilas, Colas y Listas son ejemplos de contenedores La clase que implementa la interfaz Lista, si se desea un rápido acceso a la información, contendrá dos referencias, que apunten al primer y último nodo de la lista respectivamente. Para terminar de hacer simétrica la representación se podría añadir un nodo cabecera y un nodo final para evitar que la lista se quede vacía. ITERADORES Una operación típica a realizar con una lista de elementos es recorrerlos en orden, uno de cada vez, por ejemplo para buscar un elemento específico o para sumar los valores asociados. Un iterador es un patrón de diseño de software que abstrae el proceso de recorrer una colección de elementos. Un iterador consta de una secuencia S, una posición actual en S y una forma de avanzar a la siguiente posición convirtiéndola en su posición actual. Java proporciona una versión simplificada de un iterador en el paquete java.util, el cual define dos métodos: public interface Iterador public boolean hasnext(); public Object next() {se convierte en la posición actual

13 13 Al trabajar con una clase iteradora, la clase Lista no mantendría ninguna noción de posición actual y solamente contendría los métodos que tratan a la lista como una unidad, como esvacio() y anular(). public interface IteradorLista extends Iterador public void modificar(object o) throws... public void insertar(object o); public void suprimir() throws... A continuación se muestra un método que utiliza un iterador para visualizar los elementos de la lista l. Se puede observar que la iteración sobre las listas se realiza de una forma muy natural. public static void visualizar (ListaIter l) { System.out.print("Los elementos de la lista son: "); Iterador itr = l.iteradorlista(); while (itr.hasnext()) System.out.print((Integer) itr.next() + " "); Se declara itr como un iterador que puede acceder a la lista enlazada l. Esto requiere el uso de un constructor iteradorlista(). La primera vez que se llama a next(), se obtiene el primer elemento de l. Para implementar un iterador es necesario escribir su código y definir e implementar una clase. Esta clase no es visible al usuario. Es suficiente con que el usuario conozca la interfaz Iterador y la especificación del iterador, como se ha mostrado en el ejemplo anterior. public class ListaEnlazada implements ListaIter private Nodo cabecera; public ListaEnlazada()... public boolean esvacio(). public void anular() ; public IteradorLista iteradorlista() { return new IteradorListaEnlazada(this); Este método devuelve un objeto IteradorListaEnlazada, lo cual es correcto ya que es subtipo de IteradorLista que a su vez es subtipo de Iterador. A continuación se muestra la clase IteradorListaEnlazada. Se implementa como una clase privada y estática, anidada dentro de otra clase. Al estar declarada dentro de otra clase es posible acceder a los atributos y métodos privados de la clase ListaEnlazada. Esto es apropiado puesto que IteradorListaEnlazada es realmente parte de la implementación de la clase ListaEnlazada. private static class IteradorListaEnlazada implements IteradorLista private ListaEnlazada lalista; private Nodo actual; public IteradorListaEnlazada(ListaEnlazada l).. //métodos de la interfaz Iterador public boolean hasnext() public Object next() //métodos de la interfaz IteradorLista public void modificar(object o) public void insertar(object e)... public void suprimir()throws Lo que se ha mostrado es un ejemplo simplificado de iterador. Se podría haber utilizado un iterador más sofisticado que permitiera recorrer la secuencia en los dos sentidos, usando para ello los métodos hasprevious() y previous(). Además, puede ser necesario, en ocasiones, tener definidos varios iteradores. En ese caso se recomienda no usar el iterador mientras se modifica la secuencia. Jerarquía de herencia para los TAD secuencias Hemos presentado tres tipos de secuencias (vectores, listas y listas con iteradores) que han dado lugar a la definición de diferentes interfaces y clases. Estas definiciones pueden redefinirse agrupando los métodos y organizándolos en una jerarquía de herencia.

14 14 LISTAS ORTOGONALES En este tipo de lista se utiliza para representar matrices. Los nodos contienen cuatro apuntadores. Uno para apuntar al nodo izquierdo (li),otro para apuntar al derecho(ld), otro al nodo inferior(lb) y por último un apuntador al nodo superior(la). UNA APLICACIÓN DE LISTAS ENLAZADAS: MATRICES ESPARCIDAS Matriz rala o esparcida: matriz cuyo contenido está formado en su mayoría por ceros Alternativa empleando listas enlazadas: Una lista enlazada circular que represente una columna dummy, con tantos elementos como filas tenga la matriz. Cada elemento apunta al primer elemento de la fila respectiva Una lista para una fila dummy, con tantos elementos como columnas tenga la matriz. Cada elemento apunta al primer elemento de la columna respectiva Cada nodo de las listas dummy sirven como un nodo de encabezamiento para la lista de fila o de columna Los nodos de las listas que tienen los elementos de la matriz contienen: id fila, idcolumna, valor, next de fila, next de columna El primer nodo de la lista fila dummy coincide con el primer nodo de columna dummy y sirve como puntero de la nueva estructura Una estructura donde los nodos aparecen en más de una lista y contiene más de un puntero se denomina: LISTA MULTIENCADENADA Tener en cuenta que aquí los elementos no se acceden por referencia directa como en los arreglos. Los procedimientos son elborados.

Programación de sistemas Pilas y Colas

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

Más detalles

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

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos

Más detalles

Estructuras de datos: Pilas, Colas, Listas

Estructuras de datos: Pilas, Colas, Listas Estructuras de datos: Pilas,, Facultad de Informática Universidad de A Coruña Pilas,, Table of Contents Pilas 1 Pilas 2 3 Pilas,, Table of Contents Pilas 1 Pilas 2 3 Pilas,, Pilas Acceso limitado al último

Más detalles

Estructura de Datos. Unidad de Aprendizaje: Unidad de Competencia II: Estructuras de Datos Lineales. M. en C. Edith Cristina Herrera Luna

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

Más detalles

Tema 8- Implementación de Pila, Cola y. Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés. Representación Eficaz de una EDA

Tema 8- Implementación de Pila, Cola y. Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés. Representación Eficaz de una EDA Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés Índice general: 1. Representación Eficaz de una EDA Lineal 2. Implementación

Más detalles

Estructuras de Datos. La pila es un objeto dinámico en constante cambio.

Estructuras de Datos. La pila es un objeto dinámico en constante cambio. 21 Capítulo 2. LA PILA (STACK). 2.1 Definición y ejemplos. Una pila es un conjunto ordenado de elementos en el cual se pueden agregar y eliminar elementos de un extremo, el cual es llamado el tope de la

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

TAD: Pila. TALLER: TAD Pila

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

Más detalles

Estructura de datos Colas

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

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

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 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

Más detalles

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 -

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

Más detalles

TAD CONJUNTOS Y MULTICONJUNTOS

TAD CONJUNTOS Y MULTICONJUNTOS TAD CONJUNTOS Y MULTICONJUNTOS INTRODUCCIÓN Qué es un conjunto? Un conjunto en matemática es una colección de objetos. Los objetos no mantienen ninguna relación aparente entre ellos y tampoco están obligados

Más detalles

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Unidad Nº V Listas Enlazadas

Unidad Nº V Listas Enlazadas Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta

Más detalles

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)

Más detalles

Tema 6. Gestión dinámica de memoria

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

Más detalles

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

Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros Especificación de TAD s. TAD Pila de Enteros. desapilar 2 7 3 5 apilar Cima de la Pila Cima de la Pila Definición: Estructura de Datos que

Más detalles

Tema 5. Estructura de datos Pila

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

Más detalles

Estructuras de Datos y Algoritmos TDA LISTA

Estructuras de Datos y Algoritmos TDA LISTA Estructuras de Datos y Algoritmos TDA LISTA Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas y la estructura de datos Diseño de una Clase (repaso)

Más detalles

11. PILAS Introducción Fundamentos

11. PILAS Introducción Fundamentos 11. PILAS 11.0 INTRODUCCIÓN... 25 11.1 FUNDAMENTOS... 25 11.2. REPRESENTACIÓN DE LAS PILAS EN C++... 26 Implementación mediante estructuras estáticas... 31 Implementación mediante cursores... 35 Implementación

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona

Más detalles

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

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

1. Leer el primer número y almacenarlo en la raíz del árbol. 2. Repetir hasta encontrar un duplicado o el árbol esté vacío.

1. Leer el primer número y almacenarlo en la raíz del árbol. 2. Repetir hasta encontrar un duplicado o el árbol esté vacío. Capítulo 6 Árboles 6.1 Introducción Esta no es una estructura lineal, deben conocerlos de matemáticas finitas. Ejemplos: la tabla de contenido de un libro, los que se hacen en los torneos, los arboles

Más detalles

Pilas, Colas. Andrea Rueda. Estructuras de Datos. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas

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,

Más detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

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 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

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

Más detalles

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08 Patrones de Diseño Patrón estructural Composite Técnicas de Programación - Curso 2007/08 Propósito Componer objetos en estructuras arbóreas para representar jerarquías todo-parte. Manipular todos los objetos

Más detalles

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

Tema 7.- Fundamentos de la Programación Orientada a Objetos Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).

Más detalles

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

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

Más detalles

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014 Tema 4 Colecciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Colecciones (paquete java.util): Interfaz Collection Interfaz List Interfaz Set InterfazMap Copia de

Más detalles

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010 Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del

Más detalles

3.3 Conceptos Básicos del Lenguaje Java

3.3 Conceptos Básicos del Lenguaje Java 3.3 Conceptos Básicos del Lenguaje Java Conjunto de Caracteres Java utiliza Unicode, un conjunto de caracteres de 16 bits Java permite leer ASCII de 7-bit o Latin-1, conviertiéndolo a Unicode Son pocos

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

Para la Implementación Dinámica de listas: Se usa la asignación dinámica de memoria mediante punteros o referencias.

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

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol Árboles Las listas enlazadas, pilas y colas son estructuras de datos lineales (es decir, secuencias). Un árbol es una estructura de datos bidimensional no lineal, con propiedades especiales. Los nodos

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

UNIDAD 9. DATOS COMPLEJOS PILAS

UNIDAD 9. DATOS COMPLEJOS PILAS UNI 9. TOS OMPLEJOS PILS Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. omo consecuencia, los elementos de una pila serán eliminados

Más detalles

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico

Más detalles

Clase 26. Introducción a los árboles. Árboles

Clase 26. Introducción a los árboles. Árboles Clase 26 Introducción a los árboles Árboles Árbol es el nombre que se le da a un grupo versátil de estructuras de datos. Se pueden utilizar para implementar un número de interfaces abstractas, incluida

Más detalles

Tema: Algoritmos para la ruta más corta en un Grafo.

Tema: Algoritmos para la ruta más corta en un Grafo. Programación IV. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos para la ruta más corta en un Grafo. Objetivos Específicos Definir el concepto de camino

Más detalles

Un. VI. Generador de código intermedio.

Un. VI. Generador de código intermedio. Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes

Más detalles

Capitulo V Listas Enlazadas

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

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación

Más detalles

Tema 5 Tabla de Símbolos

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.

Más detalles

7.4. UTILIDADES DE LAS PILAS

7.4. UTILIDADES DE LAS PILAS 7.4. UTILIDADES DE LAS PILAS o Llamadas a subprogramas o Paso de programas recursivos a iterativos o Un caso especial, quick_sort iterativo. o Equilibrado de símbolos o Tratamiento de expresiones aritméticas

Más detalles

Árboles binarios de búsqueda

Árboles binarios de búsqueda Clase 27 Árboles binarios de búsqueda Árboles binarios de búsqueda En la clase anterior, definimos el concepto de árbol binario de búsqueda como un árbol binario de nodos que contienen una clave ordenada

Más detalles

PILAS Fundamentos

PILAS Fundamentos Alg. y Estr. Datos-I / Fund. Progr.-II (R. Ferrís, J. Albert) 11 PILAS 11.1 Fundamentos En este tema y en el siguiente se analizarán las estructuras de datos lineales pilas y colas. Las pilas y las colas

Más detalles

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal

Más detalles

Grafos. Amalia Duch Brown Octubre de 2007

Grafos. Amalia Duch Brown Octubre de 2007 Grafos Amalia Duch Brown Octubre de 2007 Índice 1. Definiciones Básicas Intuitivamente un grafo es un conjunto de vértices unidos por un conjunto de líneas o flechas dependiendo de si el grafo es dirigido

Más detalles

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

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

El patrón Composite (Compuesto) Propósito Componer los objetos a una estructura de jerarquía de relación partetodo.

El patrón Composite (Compuesto) Propósito Componer los objetos a una estructura de jerarquía de relación partetodo. Definición más precisa de los patrones Un patrón del diseño nomina, abstrae y identifica los aspectos claves de un diseño común para crear un diseño orientado a objetos reutilizable. Son descripciones

Más detalles

Alonso Ramírez Manzanares Computación y Algoritmos 10.03

Alonso Ramírez Manzanares Computación y Algoritmos 10.03 Recursividad mat-151 1 Ejercicio de recursión: dibujando una regla Queremos dibujar las marcas de diferentes tamaños de una regla. Marcas grandes cada 1/2 cm, marcas más pequeñas cada 1/4 cm... hasta una

Más detalles

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación INDICE Prologo XI Capitulo 1. Algoritmos y programas 1.1. Configuraciones de una computadora 1 1.2. Lenguajes de programación 2 1.3. Resolución de problemas 1.3.1. Fase de resolución del problema 3 1.3.1.1.

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes Introducción Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Qué es la POO?! Un paradigma de programación! Un paradigma es una forma de afrontar

Más detalles

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS PROGRAMA DEL CURSO INTRODUCCION A LA PROGRAMACION Y COMPUTADORAS 1 CODIGO: 770 CREDITOS: 4 ESCUELA: Ciencias

Más detalles

Elementos de un programa en C

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

Más detalles

INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS

INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) 1. INTRODUCCIÓN INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS Las computadoras fueron diseñadas o ideadas como una herramienta mediante la cual

Más detalles

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

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006 ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los

Más detalles

Ejercicios resueltos de programación

Ejercicios resueltos de programación Ejercicios resueltos de programación Mariano Fernández López Escuela Politécnica Superior, Universidad San Pablo CEU 18 de marzo de 2015 Índice general 1. Implementación de un método recursivo 2 1.1. Enunciado.............................

Más detalles

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS CONTENIDO PRÓLOGO XIX CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS 1.1 Introducción 2 1.2 Resolución de problemas mediante la computadora 3 1.3 Conceptos de programación orientada a objetos

Más detalles

Análisis amortizado El plan:

Análisis amortizado El plan: Análisis amortizado El plan: Conceptos básicos: Método agregado Método contable Método potencial Primer ejemplo: análisis de tablas hash dinámicas Montículos agregables (binomiales y de Fibonacci) Estructuras

Más detalles

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

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

Más detalles

GUÍA DE ESTILO EN JAVA

GUÍA DE ESTILO EN JAVA GUÍA DE ESTILO EN JAVA Formato de líneas 1. No usar más de 80 caracteres por línea (imagen de tarjeta). De esta forma se pueden visualizar las líneas completas con un editor de texto o en una hoja impresa

Más detalles

Contenido. Prólogo... Capítulo 1. Algoritmos y estructuras de datos... 1. Introducción... 24

Contenido. Prólogo... Capítulo 1. Algoritmos y estructuras de datos... 1. Introducción... 24 Contenido Prólogo... vii Capítulo 1. Algoritmos y estructuras de datos... 1 Introducción... 2 1.1. Tipos de datos... 2 1.1.1. Tipos primitivos de datos... 3 1.1.2. Tipos de datos compuestos y agregados...

Más detalles

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc. Tutorial de C# Delegados y Eventos Por: Óscar López, M.Sc. [email protected] DELEGADOS Delegados Son unos objetos que implícitamente extienden de System.Delegate y definen un tipo referencia soportado

Más detalles

EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET...

EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET... APRENDERAPROGRAMAR.COM EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET... (CU00916C) Sección: Cursos Categoría: Lenguaje de

Más detalles

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

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

Generación de Código Intermedio

Generación de Código Intermedio Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede

Más detalles

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual. Manual de Dev-C++ 4.9.9.2 Página 1 de 11 Introducción Dev-C++ es un IDE (entorno de desarrollo integrado) que facilita herramientas para la creación y depuración de programas en C y en C++. Además, la

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

ASIGNATURA: ESTRUCTURA DE DATOS II

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

Más detalles

Prueba N o 1. Programación II

Prueba N o 1. Programación II UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.

Más detalles

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el???

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Apuntes elaborados por: Aaron Asencio, duardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Tema 9: rafos Los grafos no son más que la versión general de un árbol, es decir, cualquier nodo de

Más detalles

Trabajo Práctico Nº 10 Estructuras Dinámicas: Pila y Cola.

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

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

14. ÁRBOLES. 14.1 Fundamentos y terminología básica

14. ÁRBOLES. 14.1 Fundamentos y terminología básica Ricardo Ferrís / Jesús Albert Algoritmos y estructuras de datos I 14. ÁRBOLES 14.1 FUNDAMENTOS Y TERMINOLOGÍA BÁSICA... 79 14.2. ÁRBOLES BINARIOS... 81 14.3. FUNDAMENTOS... 82 14.3. OPERACIONES CON ÁRBOLES

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

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

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2 324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:

Más detalles

Tema 3. Análisis de costes

Tema 3. Análisis de costes Tema 3. Análisis de costes 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

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles