













Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
La importancia de las computadoras radica fundamentalmente en su capacidad para procesar información. Esta característica les permite realizar actividades que antes solo las realizaban los humanos. Un dato puede significar un número, un carácter o cualquier símbolo que represente una cantidad, una medida, una palabra o una descripción. La importancia de los datos está en su capacidad de asociarse dentro de un contexto para convertirse en información. Para ser útiles, los datos deben convertirse en información para ofrecer un significado, conocimiento, ideas o conclusiones.
Tipo: Apuntes
1 / 21
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!














Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Introducción La importancia de las computadoras radica fundamentalmente en su capacidad para procesar información. Esta característica les permite realizar actividades que antes solo las realizaban los humanos. Un dato puede significar un número, un carácter o cualquier símbolo que represente una cantidad, una medida, una palabra o una descripción. La importancia de los datos está en su capacidad de asociarse dentro de un contexto para convertirse en información. Para ser útiles, los datos deben convertirse en información para ofrecer un significado, conocimiento, ideas o conclusiones. Estructura de Datos Con el propósito de que la información sea procesada, se requiere que ésta se almacene en la memoria de la computadora. Definición: Una Estructura de Datos Es un contenedor que almacena datos en una disposición específica. Esta "disposición" permite que una estructura de datos sea eficiente en algunas operaciones e ineficiente en otras. Comprender las estructuras de datos nos permite poder elegir la que sea más óptima para el problema en cuestión.
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro De acuerdo con la forma en que los datos se organizan, se clasifican en: Tipos de Datos Simples Definición: Un tipo de dato simple es aquél cuyo contenido se trata como una unidad que no puede separarse en partes más elementales. La principal característica de los tipos de datos simples consiste en que ocupan solo una casilla de memoria (Imagen 2 ). Tipos de Datos Estructurado Definición: Los tipos de datos estructurados son aquellos que permiten almacenar un conjunto de elementos bajo una estructura particular, darle un único nombre, pero con la posibilidad de acceder en forma individual a cada componente (Imagen 3 ). TIPO DE DATOS SIMPLES ESTRUCTURADOS Identificador Imagen 2. Tipo de Dato Simple Identificador Imagen 3. Tipo de Dato Estructurado Imagen 1. Tipo de Datos
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Se puede representar gráficamente como: Los “ componentes ” hacen referencia a los elementos que forman el arreglo, es decir, a los valores que se almacenan en cada una de las casillas, mientras que los “ índices ” hacen referencia a los componentes del arreglo en forma individual, es decir, distinguirán entre sus elementos. Características del Arreglo
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Las operaciones válidas en arreglos son las siguientes:
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Arreglo Registro Un arreglo puede almacenar n elementos del mismo tipo (estructura de datos homogénea). Un registro puede almacenar n elementos de diferentes tipos de datos (estructura de datos heterogénea). A los componentes de un arreglo se tiene acceso por medio de índices que indican la posición del elemento correspondiente en el arreglo. Los componentes de un registro, los campos, se tiene acceso por medio de su nombre, que es único. Estructura de Datos Dinámicas Definición: Son aquellas en las que el tamaño de la estructura o la cantidad de elementos que esta puede almacenar variar a medida que el usuario ejecuta el programa. No requiere que se indique el tamaño de espacio a utilizar. El tamaño de espacio es limitado por el espacio físico de la computadora (memoria principal).
Definición : Una lista es una sucesión de cero o más elementos de un mismo tipo (homogéneo). Se representa por una sucesión de elementos separados por comas: L= a 1 , a 2 , a 3 … an; donde “n” indica el número de elementos de la lista y se denomina longitud de la lista siendo n >= 0. Cuando n = 0 se tiene una lista vacía o nula, o sea, sin elementos. Tabla 2. Diferencias entre los Arreglos y Registros ESTRUCTURAS DE DATOS DINÁMICAS LISTAS LISTAS PILAS
Imagen 9. Estructuras de Datos Dinámicas
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Las listas contribuyen una estructura flexible, ya que puede crecer o decrecer según se requiera. Los elementos son accesibles y se pueden insertar y suprimir en cualquier posición de la lista. Además, las listas pueden concatenarse entre sí o dividirse en sublistas. Una propiedad importante de una lista es que sus elementos pueden estar ordenados en forma lineal, de acuerdo con sus posiciones en la misma. Denominamos lista lineal, a la que se rige por la “Ley de Precedencia”. Ley de Precedencia Definición: Es el orden que se asigna a los elementos en donde: a cada elemento “ai” le precede el elemento único “ai- 1 ” y le sucede el elemento único “ai+1”. Para poder trabajar con listas el 1º paso es crearlas en el “Directorio de Listas”, el cual tiene 2 campos; nombre de la lista y puntero al 1º elemento de la lista. Las operaciones válidas en las listas son las siguientes:
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Imagen 11. Código fuente Operaciones con Lista Simple Encadenada 67 # Agregamos las primeras claves por el END 68 s.add_at_end("A") 69 s.add_at_end("B") 70 s.add_at_end("C") 71 print("2.Almacenar las claves {A,B,C}") 72 s.print_list() # Imprimimos la lista de nodos 73 print(" \n") Imagen 13a. Código fuente agregar claves a la lista L 10 A 20 10 B 30 20 C * 30
Imagen 13b. Representación gráfica agregar claves a la lista 74 # Agregamos otra clave por el FRONT 75 s.add_at_front("D") 76 print("3.Almacenar la clave {D} por el FRONT") 77 s.print_list() 78 print("\n") Imagen 14a. Código fuente agregar clave a la lista por el frente
L 5 D 10 5 A 20 10 B 30 20 Imagen 14b. Representación gráfica agregar clave a la lista por el frente C * 30 54 # Método para imprimir la lista de nodos 55 def print_list( self ): 56 node = self.head 57 while node != None: 58 print(node.data, end =" → ") 59 node = node.next 60 61 # Instancia de la clase 62 s = linked_list() 63 64 # Verificamos de la Lista esta creada y vacía. 65 print("1. Declarar una estructura de LSE") 66 print("Lista vacía: ", s.is_empty()) L *
Imagen 12b. Representación gráfica Lista Vacía
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro
Representación Estática : Mediante el uso de un vector de “n” posiciones. Cuando entre el primero y el último elemento no hay espacios en blanco, se dice que la lista es “densa”. A B C D 0 1 2 3 Representación Dinámica : Mediante el uso de listas encadenadas. Listas Encadenada simple Doblemente encadenadas Doblemente encadenadas circular 79 # Agregamos otra clave por una posición intermedia 80 s.add(2, "X") 81 print("4. Almacenar la clave {X} en [2]") 82 s.print_list() 83 print() 84 print(" \n") Imagen 15a. Código fuente agregar clave a la lista por una posición intermedia
L 5 D 10 5 A 15 10 B 30 20 Imagen 15a. Representación gráfica agregar clave a la lista por una posición intermedia C * 30 X 20 15 85 # Eliminamos una clave por una posición intermedia 86 s.delete_node("B") 87 print("5. Eliminar la clave {B}") 88 s.print_list() # Imprimimos la lista de nodos 89 print(" \n") Imagen 16a. Código fuente eliminar clave
L 5 D 10 5 A 15 10 X 30 15 Imagen 16b. Representación gráfica eliminar clave C * 30 Imagen 17. Representación Estática de Lista Encadenada Descargar Código
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro En estas listas, el nodo tiene 2 campos punteros: Lista Doble Encadenada Circular Este tipo de lista se caracteriza por que sus punteros no son nulos. Esto se debe a que el PA del primer nodo apunta al último nodo; y el PS del último nodo apunta al primer nodo de la lista. Por ello se usa una estructura auxiliar denominada “Nodo Cabecera” que se agrega al inicio de la lista y se distingue por que su campo “Info” contiene un asterisco (*), es decir, es nulo. No obstante, este nodo no es parte de la lista, ya que no es un elemento de ella y sirve únicamente para identificar el primer nodo. PA Info PS Puntero al Anterior: que señala al nodo predecesor Puntero al Siguiente: que señala al nodo siguiente Campo Info Imagen 21. Estructura Lista Doble Encadenada L = {A, B, C, D} L 20 20 A 30
30 20 B^40 40 30 C 50 50
40 D Imagen 2 2. Ejemplo de Lista Doble Encadenada L = {A, B, C} Imagen 2 3. Ejemplo de Lista Doble Encadenada Circular L 10 20 40 A 30 30 20 B 40 40 30 C 20 10 20
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Las listas permiten insertar y eliminar elementos en cualquier lugar, al principio, en el medio o al final. Sin embargo, son muy numerosos los casos que se necesitan listas en las cuales las inserciones y las eliminaciones se produzcan solo por un extremo. Estas estructuras se conocen como Pilas y Colas. Pilas Esta estructura de datos es relativamente simple y muy utilizada en informática en general y en programación en particular. Una pila, es una estructura cuyo concepto informático es similar al concepto de pila en el mundo real, es decir, una pila de platos, de libros, etc. En las pilas, los elementos solo pueden añadirse por un extremo, el tope o cima; que es la parte superior de la pila; y solo pueden quitarse elementos por ese mismo extremo. Definición : Una pila (stack) es una estructura de datos lineal y dinámica en donde las inserciones y las eliminaciones se realizan por el mismo extremo. En consecuencia, utiliza el algoritmo LIFO (Last In First Out
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Ejemplo: Declarar una estructura de PILA como Lista Simple Encadenada que permita: 1. Almacenar las claves {A,B,C,D}; 2. Eliminar 1 elemento (LIFO). Puntero a tope P 10 10 A * FONDO = 10 TOPE = 10 P = {A} Imagen 27a. Representación dinámica de la pila P = {A} P 20 20 B 10 10 A * FONDO = 10 TOPE = 20 P = {A, B} Imagen 27b. Representación Dinámica de la Pila P = {A, B} 1 # Creamos la clase Nodo 2 class Nodo(): 3 4 def init(self, dato, siguiente): 5 self.dato = dato 6 self.siguiente = siguiente Imagen 28. Código fuente Operaciones con Pilas como Lista Simple Encadenada 7 print("PILA en Lista Simple Encadenada \n") 8 pila = [] # Iniciamos la pila vacía 9 print("Pila =", pila, "\n") Imagen 28a. Código fuente Pila LSE P *
Imagen 28b. Representación gráfica pila vacía 10 # Ingreso de claves 11 print("Ingreso de las claves") 12 print("Ingresa A") 13 pila.append("A") 14 print(pila, "\n") 15 print("Ingresa B") 16 pila.append("B") 17 print(pila, "\n") 18 print("Ingresa C") 19 pila.append("C") 20 print(pila, "\n") 21 print("Ingresa D") 22 pila.append("D") 23 print(pila, "\n")s.add(2, "X") Imagen 29a. Código fuente agregar claves a la pila
P 10 D 15 10 B 30 20 Imagen 29b. Representación gráfica agregar claves A * 30 C 20 15
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Colas Es una estructura de datos en el cual los elementos solo pueden añadirse por un extremo y eliminarse por otro. El nombre Cola, al igual que el de Pila, tiene semejanza con las colas de la vida ordinaria; una cola de personas para subir a un colectivo, para la entrada de un cine, etc. Definición : Una Cola es una estructura de datos lineal y dinámica, en donde las inserciones se hacen por un extremo y las eliminaciones por el otro. En consecuencia, utiliza el algoritmo FIFO (First In First Out – en español: primero en entrar, primero en salir); por ellos de los conoce como “Listas FIFO”. Las Colas trabajan con 2 punteros: FRONT : indica el primer elemento ingresado. Por lo tanto, se lo utiliza para eliminar elementos. REAR : indica el último elemento ingresado. Por lo tanto, se lo utiliza para agregar elementos. Operaciones permitidas
Imagen 31. Representación gráfica de una Cola y sus punteros 24 print("Elimina 1 elemento") 25 pila.pop() 26 print("Pila =",pila, "\n") Imagen 30a. Código fuente eliminar claves a la pila
P 15 Imagen 30b. Representación gráfica eliminar clave B 30 20 A * 30 C 20 15 Descargar Código
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Ejemplo: Declarar una estructura de COLA como Lista Simple Encadenada que permita: 1. Almacenar las claves {A,B,C,D}; 2. Eliminar 1 elemento (FIFO). 1 # Creamos la clase Nodo 2 class Nodo(): 3 4 def init(self, dato, siguiente): 5 self.dato = dato 6 self.siguiente = siguiente Imagen 34. Código fuente Operaciones con Cola como Lista Simple Encadenada 7 print("COLA en Lista Simple Encadenada \n") 8 cola = [] # Iniciamos la cola vacía 9 print("Cola =", cola, "\n") Imagen 35a. Código fuente cola LSE P *
Imagen 35. Representación gráfica cola vacía 10 print("Ingreso de las claves") 11 print("Ingresa A") 12 cola.append("A") 13 print("Cola =", cola, "\n") 14 print("Ingresa B") 15 cola.append("B") 16 print("Cola =", cola, "\n") 17 print("Ingresa C") 18 cola.append("C") 19 print("Cola =", cola, "\n") 20 print("Ingresa D") 21 cola.append("D") 22 print("Cola =", cola, "\n") Imagen 36a. Código fuente agregar claves a la pila
P 10 D 15 10 B 30 20 Imagen 36a. Representación gráfica agregar claves A * 30 C 20 15 24 print("Eliminar clave") 25 del cola[0] 26 print("Cola =", cola, "\n") Imagen 37a. Código fuente eliminar claves a la pila
P 10 Imagen 37b. Representación gráfica eliminar clave C 20 15 B * 20 D 15 10 Descargar Código
Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Colas Circulares La forma de representación estática de las colas tiene el inconveniente de que se llena el vector hacia las últimas posiciones, quedando vacías las primeras; para solucionar este inconveniente se crearon las “Colas Circulares”. Se representan mediante vectores de “n” posiciones en las que se supone que la primer posición es adyacente con la última. Otros tipos de Colas