Estructura de Datos: Lista. Facultad Ingeniería y Tecnología Informática Tecnicatura en Programación de Computadoras. Autora: Prof.
|
|
- Juan Carlos Poblete Vidal
- hace 6 años
- Vistas:
Transcripción
1 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. C1426DQG - CABA Teléfono: , internos 5002 y fasciculos@ub.edu.ar
2 "La informática tiene que ver con los ordenadores lo mismo que la astronomía con los telescopios" Edsger W. Dijkstra Tipos Abstractos de Datos Lista dinámica Introducción Las estructuras de datos son necesarias para almacenar grandes cantidades de datos de una forma organizada para que el procesamiento y recuperación de la información sea lo más óptima posible. La estructura de datos básica por excelencia es la variable, pero la dificultad que encontramos es que almacena un dato por vez, si quisiéramos almacenar mucha más información simultáneamente, necesitaríamos definir en nuestro programa muchas variables, cada una con un nombre distinto, haciendo confusa sino imposible el procesamiento y recuperación posterior de la información. Los lenguajes de alto nivel poseen estructuras de datos "primitivas" como los arreglos para poder almacenar muchos datos simultáneamente. En un arreglo los datos se almacenan en secuencia en el mismo bloque de memoria y se distinguen por la posición física que ocupan, pero también, los lenguajes nos permiten "armar" estructuras de datos más complejas donde cada dato se almacena individualmente y se enlaza con el resto de la información mediante direcciones de memoria. Las estructuras de datos complejas, para que sean fáciles de manipular se deben de implementar formando lo que se denomina un Tipo Abstracto de Datos que encapsula la representación en memoria del dato y el conjunto de funciones para manipular la información de manera tal que con este conjunto de funciones se defina una biblioteca de operaciones que se pueden aplicar a los datos como si fueran funciones pertenecientes al lenguaje. Un Tipo Abstracto de Datos permite destacar la funcionalidad o características de la estructura de datos y ocultar al usuario la forma en la que se representa en memoria. Dentro de los tipos abstractos de datos encontramos la Lista. Vamos a comenzar a introducir el concepto de Lista como estructura de datos. Clasificación de las Estructuras de Datos Las estructuras de datos pueden ser de dos tipos según sea el tipo de almacenamiento que 1
3 se use: estáticas, cuyo ejemplo básico es el arreglo y dinámicas cuyo ejemplo clásico es la lista dinámica. En definitiva es esencial saber que tanto un arreglo como una lista organizan la información de forma secuencial, esto quiere decir que cada elemento tiene un antecesor y un predecesor a ecepción del primero que no tiene antecesor y el último que no tiene sucesor. Una lista almacenada en un arreglo estático tiene una desventaja muy importante que es que la cantidad de datos máxima que podrá contener debe quedar fijada antes de su uso. Cuando un programa usa arreglos debe estar sujeto a futuras modificaciones para mofidicar el tamaño de los arreglos adecuándolos al incremento o decremento del volumen de datos a procesar, pero también puede suceder que se reserve más memoria de la que se necesita y por lo tanto no se use todo el espacio reservado con lo cual estamos desperdiciando memoria que podría ser usada por otros procesos. Una estructura de datos almacenada en forma dinámica ajusta su tamaño a las necesidades del momento, crecerá o disminuirá su tamaño a medida que el programa se ejecute dependiendo del volumen de datos. Una estructura así se denomina Lista Dinámica. Una lista implementada en forma dinámica adapta su tamaño a la cantidad de datos a procesar haciendo que el programa no se deba modificar si cambia el volumen de datos. Esto se traduce en que cuando se ingresa un nuevo dato se solicita memoria, trámite que lleva a cabo el compilador del lenguaje en combinación con el sistema operativo. La solicitud de memoria se realiza en tiempo de ejecución por eso este tipo de implementación se denomina dinámica. Listas Una lista es una estructura secuencial <d 1, d 2, d 3,..., d n >, donde n indica la cantidad de elementos de la lista, si n = 0 se dice que la lista está vacía y se denota por <>. El primer elemento es d 1 y el último elemento es d n. Cada elemento de la lista tiene un elemento predecesor y un elemento sucesor con excepción del primero y último, d 1 no tiene elemento anterior a él y d n no tiene un elemento posterior a él. Dado d i con 1 < i < n, tiene como predecesor a d i-1 y como sucesor a d i+1. Las listas se pueden almacenar en memoria de diferentes formas, las dos formas básicas son la estática y la dinámica. Ya mencionamos la desventanja en tener un almacenamiento estático, por lo tanto, en este apunte vamos a tratar el almacenamiento dinámico. Vale la pena aclarar que en el comienzo de la computación, cuando los lenguajes de alto nivel eran muy pocos y se desconocía el almacenamiento dinámico, la única forma de representar una lista era a través de arreglos. Listas Dinámicas Las listas dinámicas se clasifican en listas simplemente encadenadas y listas doblemente encadenadas. En ambos casos el acceso a cada uno de los elementos es secuencial, esto 2
4 significa que para acceder a un elemento determinado, para llegar a él hay que acceder a todos los elementos anteriores a él, es decir que si queremos acceder a di debemos pasar por d 1, d 2, d 3,..., d i-1. Una lista simplemente encadenada, enlaza cada uno de los elementos usando un puntero mientras que una lista doblemente encadenada usa dos punteros, ambos casos se pueden simular usando arreglos pero en este apunte vamos a usar punteros. Lista Simplemente Encadenada Una lista está compuesta de elementos enlazados entre sí a través de direcciones de memoria que se denomina nodo. Cada nodo de una lista consta de dos partes: un dato, di, y un puntero al elemento siguiente, pi, dando por resultado el par [di,pi], con 1 <= i <= n. El último nodo tiene la característica que pi representa una dirección nula pues no hay un elemento siguiente. La figura siguiente representa una lista simplemente encadenada: Un ejemplo de lista se muestra en la siguiente figura: 3
5 En nuestra notación, la lista de la figura anterior es: <[2,2184],[4,3225],[6,5571],[7,NULL]> donde, el primer elemento está almacenado en la dirección 2003 y estamos suponiendo que el par [dato, puntero] ocupa 2 bytes. En la figura anterior se puede apreciar que los enlaces son hacia adelante, hacia el último elemento, este tipo de encadenamiento no permite retroceder. TAD: Lista Una lista como tipo abstracto de dato es una caja negra. Esto significa que tanto la forma en la cual representemos los datos en memoria y las funciones que se definan sobre esa representación quedan encapsuladas formando una unidad. Esta forma de trabajar con las estructuras de datos permite escribir programas más óptimos permitiendo que el mantenimiento del mismo sea mucho más fácil. Cuando debamos modificar la representación de los datos para actualizarla a las necesidades del momento sabremos en qué unidad está y lo mismo sucede con el conjunto de funciones definidas. Las funciones hacen las operaciones definidas sobre la lista. Las operaciones que se pueden realizar son: insertar un elemento nuevo modificar un elemento dado eliminar un elemento dado buscar un elemento imprimir los elementos de la lista esvacia (<>) Existe otro conjunto de operaciones básicas sobre un elemento de la lista: obtener el dato obtener el puntero al siguiente asignar un dato asignar un puntero Para completar la abstracción hacen falta dos datos más que son la dirección del primer elemento de la lista y el elemento que está siendo procesado en un determinado momento al que se denomina elemento actual. Todas las operaciones salvo algunas puntuales se hacen a través de el elemento actual, entonces podemos tener que insertar o eliminar el elemento anterior al actual o el elemento posterior al actual, obtener el dato del elemento actual, modificar el valor del elemento actual. 4
6 Implementación en Lenguaje C Para llevar la abstracción a la implementación en lenguaje C debemos hacer uso del tipo struct. Usaremos el struct para encapsular los datos del nodo y de la lista. Vamos a definir el nodo sólo con dos variables miembro, el dato y el puntero al nodo siguiente, mientras que la lista estará definida por la dirección del primer nodo, que es la única dirección realmente necesaria para acceder a todos los elmentos de la lista y el elemento actual, pero podemos agregar más información útil como por ejemplo la longitud de la lista, mantener este dato hace que sea más fácil determinar si la lista está vacía, longitud igual a 0, y además nos evita contar los elementos de la lista cada vez que es necesario conocer su longitud. Para llevar a cabo la implementación vamos a hacer uso de lo que se denomina Nodo Cabecera, este nodo no llevará información útil en sí mismo sino que se lo utilizará de comodín para que ciertas operaciones sean más fáciles de implementar. Por ejemplo para poder insertar un elemento nuevo en una lista se deben tener en cuenta las siguientes posibilidades: insertar en una lista vacía insertar delante del primer elemento insertar entre dos elementos cualesquiera de la lista insertar después del último Al tener una lista con un elemento cabecera nunca va a estar vacía físicamente, siempre habrá un elemento que es el nodo cabecera por lo tanto nunca tendremos que insertar en una lista vacía. Otro elemento que vamos a incorporar es el Nodo Centinela para facilitar la operación de eliminación cuando debemos eliminar el nodo último. Todas las operaciones se realizarán sobre el elemento actual salvo algunas excepciones. Vamos a tener en cuenta que los nodos centinela y cabecera permiten considerar que la lista no está vacía desde el punto de vista físico, pero la lista está vacía desde el punto de vista lógico porque aún no contiene información, la información por la cual estamos construyendo la lista. TDA Nodo #ifndef _nodo #define _nodo typedef struct nodo #endif tdato dato; struct nodo * prox; Nodo; 5
7 TDA Lista #ifndef ListaSimple #define ListaSimple #include <stdio.h> #include <stdlib.h> #include "nodo.h" typedef Nodo * Actual; typedef struct Nodo * com; Nodo * actual; int longitud; Lista; void crearlista (Lista * l) Nodo * p = (Nodo *) malloc (sizeof(nodo)); Nodo * q = (Nodo *) malloc (sizeof(nodo)); p->prox = q; q->prox = NULL; l->longitud = 0; l->com = p; l->actual = p; //cambiar el contenido del actual void setdato (Lista * l, tdato t) l->actual->dato = t; //obtener el dato del actual tdato veractual (Lista *l) return l->actual->dato; //verificar el estado actual de la lista int eslistavacia (Lista *l) return l->longitud == 0; //nodo cabecera //nodo centinela //el nodo cabecera apunta al nodo centinela cuando la //lista está vacía //el primer nodo es el nodo cabecera //el elemento actual es el nodo cabecera cuando la // lista está vacía //verificar si el elemento actual es el primero de la lista lógica int esprimero (Lista * l) return l->actual == l->com->prox; //asigna al elemento actual la dirección del primer elemento lógico void primero (Lista * l) if (!esprimero(l)) l->actual = l->com->prox; //verifica que el elemento actual apunte al nodo centinela int esultimo (Lista * l) return l->actual->prox == NULL; 6
8 //avanza al siguiente elemento de la lista a partir del elemento actual void siguiente (Lista * l) if (!esultimo(l)) l->actual = l->actual->prox; //recorre la lista mostrando la información almacenada en cada nodo void mostrarlista (Lista * l) primero(l); while(!esultimo(l)) mostrardato(veractual(l)); siguiente(l); printf("\n"); //inserta el dato d después del elemento actual void insertardespues (Lista * l, tdato d) Nodo * p = (Nodo *) malloc (sizeof(nodo)); //mostrardato corresponde a la //abstracción de la //información almacenada en el nodo //pide memoria para el nuevo // dato p->dato = d; //actualiza los punteros para que el nodo p quede enlazado entre el actual y // el próximo p->prox = l->actual->prox; l->actual->prox = p; l->actual = p; (l->longitud)++; //incrementa en 1 el tamaño de la lista //inserta el nuevo dato d antes del elemento actual void insertarantes (Lista *l, tdato d) Nodo * p ; if (l->longitud > 0) p = (Nodo *) malloc (sizeof(nodo)); p->prox = l->actual->prox; l->actual->prox = p; p->dato = l->actual->dato; l->actual->dato = d; else insertardespues(l, d); //si la lista está vacía inserta después del //nodo cabecera (l->longitud)++; //elimina el nodo actual void eliminaractual (Lista *l) Nodo * p = l->actual->prox; (l->longitud)--; //actualiza la longitud de la lista decrementando en 1 // el campo longitud l->actual->dato = l->actual->prox->dato; l->actual->prox = l->actual->prox->prox; free(p); 7
9 //recorre la lista buscando el dato d retornando verdadero o falso int buscardato (Lista *l, tdato d) tdato e; int encontrado = 0; if (!eslistavacia(l)) primero (l); while (!esultimo(l)) e = veractual(l); if (compara(e, d) == 0) encontrado = 1; break; siguiente (l); return encontrado; //obtiene la dirección del elemento actual Actual getactual(lista * l) return l->actual; //la función compara es necesaria //dependiendo de la complejidad del // dato almacenado en la lista //obtiene la dirección del siguiente dato al actual en la lista Actual getsiguiente (Lista * l) return l->actual->prox; //obtiene la longitud de la lista int getlongitud (Lista *l) return l->longitud; //el elemento actual se ubica en el k-ésimo elemento de la lista void posicionar (Lista *l, int k) int i=1; if (l->longitud > = k) primero (l); while (i<k) siguiente (l); i++; //sitúa el elemento actual en el anterior a él void anterior (Lista *l) Nodo * p = l->actual; primero(l); while (getsiguiente(l)!= p) siguiente(l); 8
10 //convierte la lista en un archivo almacenando los datos en un archivo void listaaarchivo (Lista *l, char *arch) tdato e; FILE *fp; if((fp=fopen(arch,"wb"))==null) printf("\n\n Error, no se puede abrir el archivo: %s\n",arch); exit(0); primero(l); while(!esultimo(l)) e=veractual(l); fwrite(&e,sizeof(tdato),1,fp); siguiente(l); fclose(fp); //vacía la lista, eliminando cada nodo de ella sin eliminar los nodos cabecera y centinela void vaciarlista(lista *l) int i; primero(l); while (!esultimo(l)) eliminaractual(l); l->actual = l->com; //Crea una lista a partir de los datos almacenados en un archivo void archivoalista(lista *l, char *arch) tdato e; FILE *fp; vaciarlista(l); if((fp=fopen(arch,"rb"))==null) printf("\n\n Error, no existe el archivo: %s\n",arch); exit(0); while(fread(&e,sizeof(tdato),1,fp)==1) insertardespues(l,e); fclose(fp); //destruye la lista vaciándola y destruyendo el nodo cabecera y el nodo centinela void destruir(lista *l) vaciarlista(l); free(l->com->prox); free(l->com); 9
11 //crea una lista cuyos datos están ordenados de menor a mayor void insertarenorden(lista *l, tdato d) if(eslistavacia(l)) insertardespues(l,d); else primero(l); while(!esultimo(l)) if(compara(d,veractual(l))>0) siguiente(l); else break; insertarantes(l,d); //elimina el elemento de la posición k void eliminarpos (Lista *l, int k) posicionar(l, k); eliminaractual(l); //inserta un nuevo dato en la posición k void insertaren (Lista *l, tdato d, int k) posicionar(l, k-1); insertardespues(l, d); #endif El hombre tiene mil planes para sí mismo. El azar, sólo uno para cada uno. Mencio o Meng Zi, filósofo chino confucciano 10
12 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. C1426DQG - CABA Teléfono: , internos 5002 y fasciculos@ub.edu.ar
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 detallesEstructura 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 detallesEste 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 detallesElementos 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 detallesUniversidad 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 detallesTema 13: Apuntadores en C
Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción
Más detallesTEMA 8: Gestión dinámica de memoria
TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras
Más detallesCapitulo 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 detallesClases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.
Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete
Más detallesUnidad 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 detallesPRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS
INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: 1. Objetivo PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS El alumno comprenderá y aplicara
Más detallesTema 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 detallesListas. Programación en C LISTAS. Prof. Álvaro Sánchez Miralles. Programación en C. Listas. Objetivos
LISTAS UPCO ICAI Departamento de Electrónica y Automática 1 Objetivos Aprender a manejar una lista Manejar a través de listas, vectores de datos cuyo tamaño cambia a lo largo del programa y no se conoce
Más detallesA 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 detallesProcesadores 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 detallesClase 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 detallesTabla 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 detallesUnidad I: Introducción a las estructuras de datos
Unidad I: Introducción a las estructuras de datos 1.1 Tipos de datos abstractos (TDA) Los tipos de datos abstractos (TDA) encapsulan datos y funciones que trabajan con estos datos. Los datos no son visibles
Más detallesTabla 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 detallesEstructura 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 detallesApuntadores 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
Más detallesTEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Más detallesTADs en C. Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013
TADs en C Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013 1. Objetivos Definición de TADs en C Ocultación de la implementación del TAD Manejo básico de memoria dinámica 2. Usando
Más detallesCurso de Programación en C. Licenciatura, FCQeI. APUNTADORES.
APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación
Más detallesTema 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
Más detallesEstructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales
Estructura de Datos TDA: Listas Prof. Mauricio Solar Prof. Lorna Figueroa Parte del material fue obtenido de Lic. Claudio Barúa Primer Semestre, 2010 Indice Tipos de estructura de datos lineales Listas
Más detallesREPRESENTACIÓN DE DATOS
REPRESENTACIÓN DE DATOS Tipos de datos primitivos Tipos de Datos Estructurados TIPOS DE DATOS SIMPLES O PRIMITIVOS Dato Longitud Rango 2 TIPOS DE DATOS SIMPLES O PRIMITIVOS Surgen de la necesidad de tener
Más detalles2.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 detallesInstituto Politécnico Nacional
Instituto Politécnico Nacional Secretaria Académica Dirección de Estudios Profesionales Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Culhuacan Ingeniería en Comunicaciones y Electrónica Academia
Más detallesTIPO 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
Más detalles1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos
1.1 Tipos de Datos Primitivos 1.2 Tipos de datos estructurados 1.2.1 Arreglos unidimensionales, bidimensionales y cadenas de caracteres 1.2.2 Registros o Estructuras (unión y estructura) 1.3 Definición
Más detallesINTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008
INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema
Más detallesTema: 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
Más detallesTema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos
Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo
Más detallesCapí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 detallesTEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
Más detallesMemoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez
Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez 1. PUNTEROS 2. MEMORIA DINÁMICA 2 1. PUNTEROS 3 Qué es un puntero? Un tipo de variable cuyo valor es la dirección de memoria de otra variable.
Más detallesOrganización de Computadoras
Organización de Computadoras Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre de 2015 Proyecto N 1 Programación en Lenguaje C El objetivo principal
Más detallesAlgoritmos y Programación I
Algoritmos y Programación I ARREGLOS Y ESTRUCTURAS EN C Arreglos Un arreglo o vector es un conjunto de datos del mismo tipo, almacenados de forma contigua (es decir uno al lado del otro) en memoria principal.
Más detallesApuntadores (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
Más detallesÁ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 detallesUNIDAD 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 detallesEstructura 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 detallesESTRUCTURAS DINÁMICAS DE DATOS (LISTAS)
2012 UNAN LEON Departamento de Computación Ing. En Sistemas de Información Docente: Ing. Karina Esquivel A. Asignatura: Algoritmo y Estructura de Datos. ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS) TEMA 2:
Más detallesEstructuras de Datos Dinámicas Contenido del Tema
T E M A 2 Estructuras de Datos Dinámicas Contenido del Tema 2.1. Introducción a las estructuras de datos dinámicas. 2.2. Tipo Puntero 2.3. Aplicación: Listas enlazadas. Introducción a las Estructuras de
Más detallesLección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
Más detallesUnidad 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 detallesProgramación en Lenguaje C
Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo
Más detallesEn el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:
LABORATORIO #6 (Parte I y II) REGISTROS Y ARCHIVOS Parte I: Registros Un registro es una estructura de datos formado por un conjunto de elementos llamados campos, no necesariamente del mismo tipo y que
Más detallesProgramació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
Más detallesTAD: 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 detallesTAD 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 detalles2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA
Universidad Rafael Urdaneta Facultad de Ingeniería Escuela de Ingeniería de Computación Cátedra: Programación I Laboratorio - Semestre 2012-1 (Sección C ) Profesor: Jaime Soto Examen #1 - Fecha: 07-03-2012
Más detallesInformática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales
UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo
Más detallesANEXO XVII DE LA RESOLUCION N
Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:
Más detallesLaboratorio 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
Más detallesExamen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16
Problema 1: [1 punto] Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16 Duración: 2,45 horas 10 PUNTOS Publicación de notas 26 de enero Revisión de examen 1 de febrero En el horario
Más detallesFunciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
Más detallesCarlos 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 detallesProgramación 1. Diseño modular de nuevos tipos de datos en un programa. Diseño modular de un tipo de dato con estructura de conjunto
Programación 1 Diseño modular de nuevos tipos de datos en un programa Diseño modular de un tipo de dato con estructura de conjunto 1 1. Objetivo de la lección Presentar una metodología para el diseño modular
Más detallesProgramación estructurada (Introducción a lenguaje C)
Programación estructurada (Introducción a lenguaje C) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada
Más detallesTodo 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 detallesProgramación Básica Estructuras de Datos y Funciones en C
Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 8 Universidad de Guanajuato, DCI, Campus León 1 / 33 Contenido 1 Estructuras de Datos
Más detallesAl concluir está práctica el estudiante será capaz de elaborar programas utilizando apuntadores y arreglos.
Apuntadores Práctica 13 Alumno: Grupo: Fecha: Instituto Politécnico Nacional Secretaria Académica Dirección de Educación Superior ESIME Culhuacan Ingeniería en Computación Fundamentos de Programación Objetivo
Más detallesIntroducción rápida a la programación (estructurada ) con C++
Introducción rápida a la programación (estructurada ) con C++ A B No A? Si B A Los Bloques pueden ser una línea de código o un modulo (función o subrutina) que pueden estar contenido en otro archivo de
Más detallesUNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.
Más detallesEl 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 detallesProgramació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.
Más detallesProgramación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 7 Nombre: Estructuras de datos Contextualización Cuando un programa suele ser muy extenso, un problema clásico de los programadores es la
Más detallesLos elementos de una lista unidireccional o secuencia, llamados nodos, constan de dos partes:
A. Dasso, A. Funes Introducción a la Programación tas de Clase Listas 9 ESTRUCTURAS DE DATOS: LISTAS UNI Y BIDIRECCIONALES 9.1 LISTAS UNIDIRECCIONALES COMPOSICIÓN DE LOS ELEMENTOS Los s de una lista unidireccional
Más detallesPara 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 detallesDiagramas De Casos De Uso
Estáticos Diagramas De Casos De Uso Los diagramas de casos de uso documentan el comportamiento de un sistema desde el punto de vista del usuario.. Por lo tanto los casos de uso determinan los requisitos
Más detallesFUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería
Más detallesDEFINICION. 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 detallesEl 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Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores
Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,
Más detallesUnidad 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 detallesTecnó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 detallesEn este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.
El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos
Más detallesIII. Generación de Código orientado a objetos
III. Generación de Código orientado a objetos UNIDAD III Aspectos fundamentales Del código orientado a objetos. MÓDULOS DE CÓDIGO 1 DE FORMULARIO Almacenan el código en VB 2 ESTÁNDAR 3 DE CLASE Contiene
Más detallesEstructuras de Datos Declaraciones Tipos de Datos
Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación
Más detallesPRÁCTICA Nº 5: 2 sesiones (del 11 de Abril al 17 de Abril de 2003) Listas con punto de interés para la composición de melodías musicales
PRÁCTICA Nº 5: 2 sesiones (del 11 de Abril al 17 de Abril de 2003) Listas con punto de interés para la composición de melodías musicales 0. OBJETIVOS El objetivo de esta práctica es la implementación del
Más detallesLaboratorio Informática
Laboratorio Informática Clase Project 2 Profesor: Ing. Maximiliano Sangalli Project 2007 1. Crear un archivo 2. Definir Calendario 1. Calendario Base 3. Agregar Tareas al proyecto Crear Proyecto Tipo Calendario
Más detallesLECCION N 08 ARBOLES. Un árbol es un grafo A que tiene un único nodo llamado raíz que:
LECCION N 08 ARBOLES Los árboles son estructuras de datos útiles en muchas aplicaciones. Hay varias formas de árboles y cada una de ellas es práctica en situaciones especiales, en este capítulo vamos a
Más detallesEstructuras de datos: Pilas, Colas, Listas
Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Índice Pilas 1 Pilas 2 3 Referencias bibliográficas Pilas M. A. Weiss., pilas
Más detallesDesde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
Más detallesEl TAD Grafo. El TAD Grafo
Objetivos! Estudiar la especificación del TAD Grafo! Presentar diferentes alternativas de implementación! Conocer los algoritmos más importantes de manipulación de grafos Contenidos.1 Conceptos. Especificación
Más detallesLenguaje de programación C. Introducción
Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la
Más detallesProgramación Básica Apuntadores y Archivos en C
Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 10 Universidad de Guanajuato, DCI, Campus León 1 / 21 Universidad de Guanajuato, DCI,
Más detallesOBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.
/ OBJETIVOS Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos. LABORATORIO 6 MANEJO DE ARCHIVOS DE TEXTO Y BINARIOS Msc. Walter Fernandez
Más detallesDefinición de Memoria
Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria
Más detallesVariables. 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 detallesMétodos que devuelven valor Dado el siguiente triángulo rectángulo:
Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán
Más detallesASIGNATURA: 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 detallesSISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos
TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus
Más detallesGuía práctica de estudio 04. Almacenamiento en tiempo de ejecución
Guía práctica de estudio 04. Almacenamiento en tiempo de ejecución Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio
Más detallesLenguaje C Estructuras y Variables definidas por el Usuario.
Lenguaje C Estructuras y Variables definidas por el Usuario. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Qué es una Estructura? En la
Más detallesEstructura de Datos: Archivos
Estructura de Datos: Archivos Registros (record) Un registro es una estructura que consiste de un número fijo de componentes llamados campos. Los campos pueden ser de diferentes tipos y deben tener un
Más detallesTEMA 4. ESTRUCTURAS DE CONTROL
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.
Más detallesAdministración de Archivos
Administración de Archivos Conceptos Básicos Datos e información: En diversas ocasiones se usan los términos datos e información de manera indistinta, lo cual nos lleva a un manejo erróneo de dos conceptos
Más detalles