Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


ESTRUCTURAS ELEMENTALES, Apuntes de Estructuras de Datos y Algoritmos

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

2025/2026

Subido el 09/03/2026

gabriel-alejandro-lopez-quesada
gabriel-alejandro-lopez-quesada 🇦🇷

5 documentos

1 / 21

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Año 2024 - Estructura de Datos y Algoritmos
Plantel Docente: Mgtr. Escobal Blanco Cesar
Esp. López Quesada Gabriel Alejandro
Página 1
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.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Vista previa parcial del texto

¡Descarga ESTRUCTURAS ELEMENTALES y más Apuntes en PDF de Estructuras de Datos y Algoritmos solo en Docsity!

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

  • Finito: Todo arreglo tiene un límite, es decir, se debe determinar cuál será el número máximo de elementos que formarán parte del arreglo.
  • Homogénea: Todos los elementos de un arreglo son del mismo tipo, es decir, todos enteros, todos boléanos, etc., pero nunca una combinación de distintos tipos.
  • Ordenada: Se puede determinar cuál es el primero, el segundo… el enésimo elemento. Ejemplo: A continuación, un arreglo unidimensional simple de tamaño 4, que contiene elementos (A, B, C y D). A cada elemento de datos se le asigna un valor numérico positivo llamado índice, que corresponde a la posición de ese elemento en el arreglo. La mayoría de los lenguajes definen al 0 (cero) como el índice inicial. A B C D 0 1 2 3 Una ventaja que tienen los arreglos es que el costo de acceso a un elemento dado del arreglo es constante, es decir no hay diferencias de costo entre accesar el primer, el último o cualquier elemento del arreglo, lo cual es muy eficiente. La desventaja es que es necesario definir a priori el tamaño del arreglo, lo cual puede generar mucha pérdida de espacio en memoria si se definen arreglos muy grandes para contener conjuntos pequeños de elementos. C 1 C 2 C 3 Cn Componentes val 1 val 2 val 3 valn Índices Imagen 5. Arreglo unidimensional Imagen 6. Ejemplo de arreglo unidimensional

Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro Las operaciones válidas en arreglos son las siguientes:

  • Lectura / Escritura
  • Asignación Inserción
  • Actualización Eliminación
  • Ordenación Modificación
  • Búsqueda Arreglos Bidimensionales (Matrices) Definición: Es una colección homogénea, finita y ordenada de datos, en la que se hace referencia a cada componente del arreglo por medio de dos índices, el primero se usa para las filas y el segundo para las columnas. Un arreglo bidimensional también se puede definir como un arreglo de arreglos. El arreglo A(M x N) tiene M filas y N columnas. Un elemento A[I, J] se localiza en la fila “I” y en la columna “J”. Un arreglo bidimensional es utilizado cuando queremos guardar mucha información sobre un tipo de dato en específico en distintas filas. Se puede representar gráficamente como: 1 2 3 n 1 2 3 n Las operaciones permitidas con los arreglos bidimensionales son las mismas que las citadas para arreglos unidimensionales. Registros De acuerdo con lo estudiado en el tema anterior; los arreglos son estructuras de datos muy útiles para almacenar una colección de datos, todos del mismo tipo. Sin embargo, en la práctica, a veces se Imagen 7. Arreglo bidimensional

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

Listas

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

GRAFOS ARBOLES

COLAS

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:

  • Crear la lista
  • Agregar y eliminar elementos
  • Comparar y ordenar elementos
  • Dividir la lista en 2 o más sublistas
  • Unir 2 o más listas en 1 sola (concatenación) Nombre de la Lista L P Puntero al primer elemento Imagen 10. Directorio de Listas

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

Agregar claves A, B y C

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

Agregar clave D desde el Front

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 *

Crear una lista vacía

Imagen 12b. Representación gráfica Lista Vacía

Plantel Docente: Mgtr. Escobal Blanco Cesar Esp. López Quesada Gabriel Alejandro

Formas de representación de las listas

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

Agregar clave X en [2]

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

Eliminar la clave B

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

  • en español: último en entrar, primero en salir). Es por ello que las pilas también se las conoce como “Listas LIFO”. Las pilas trabajan con dos punteros: FONDO : indica el primer elemento ingresado TOPE : indica el último elemento ingresado Operaciones permitidas
    • Crear la Pila
    • Agregar elementos
    • Eliminar elementos Cuando FONDO = TOPE = 0 significa que la lista está vacía. Una vez que la pila comienza a trabajar, el puntero FONDO es constante y TOPE es variable Imagen 24. Representación gráfica de una Pila y sus punteros TOPE FONDO Ingresos Egresos

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 *

Crear una Pila vacía

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

Agregar claves [A,B,C,D]

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

  • Crear la Cola
  • Agregar elementos
  • Eliminar elementos
  • Visualizar la Cola

REAR FRONT

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

Eliminar clave

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 *

Crear una Cola vacía

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

Agregar claves [A,B,C,D]

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

Eliminar clave

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

  1. Colas con ingreso restringido : se ingresa elementos por un solo extremo y se elimina elementos por ambos extremos.
  2. Colas con salida restringida : se ingresa elementos por ambos extremos y se elimina elementos por un solo extremo. La condición de cola vacía y de cola llena es la misma; se verifica que: FORNT = REAR Entonces, para diferenciar una situación de la otra se conviene que la cola está llena cuando todas las posiciones están ocupadas, excepto una. 1 0 N- 1 N Imagen 38. Representación gráfica de una Cola Circular Cola vacía: FRONT = REAR Cola llena: FRONT = REAR - 1 Imagen 39. Cola de ingreso restringido Imagen 40. Cola de con salida restringida