ESTRUCTURAS DE DATOS I

   Conocer, comprender y analizar
  algunos de los principales tipos de
         estructuras de datos
Estructuras de Datos: Conceptos
    Conjunto de datos de tipos iguales o
     diferentes que se relacionan entre si y que
     se pueden operar como un todo.
Datos Simples
Hacen referencia a un único valor a la vez en memoria
              Entero, Real, Carácter, Lógico

  Estáticos            Arreglos, Registros,
                       Archivos, Cadenas
Datos Estructurados
Se refieren a un grupo de casillas de memoria

  Dinámicos            Listas, Arboles, Grafos
Estructuras de Datos: Implementación
      Para implementar alguna estructura de datos,
       primero es necesario tener muy claro cómo va a
       ser el manejo de memoria.
      La diferencia entre estructuras estáticas y
       dinámicas es el manejo de memoria.


    Estática                Dinámica
    Durante la ejecución    Durante la ejecución
    del programa el         del programa el
    tamaño de la            tamaño de la
    estructura no cambia    estructura puede
                            cambiar
Estructuras de Datos
     Tema: Memoria Estática
     Subtema: Conceptos de Arreglos
   Definición: Colección finita, homogenea y ordenada de
    elementos. Finita: Porque todo arreglo tiene un límite.
    Homogenea: Porque todos los elementos son del mismo tipo.
    Ordenada: Porque se puede determinar cuál es el enésimo
    elemento.
   Un arreglo tiene dos partes: Componentes e índices
      C1 C2 .... Cn        Componentes
       i0   i1     in        Índices
   Componentes: Hacen referencia a los elementos que forman el
    arreglo.
   Índices: Permiten referirse a los componentes del arreglo en
    forma individual.
Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos Unidimensionales
 Son los arreglos más simples y constan de un solo
  índice, tambien se llaman vectores.
 Notación: Podría ser de diferentes maneras. Por ej:

Array [0...9] de enteros: Vector
Vector: x
     14 43 .... 4       Componentes
     x0   x1     x9      Índices
   X hace referencia a todo el vector, mientras que x0,
    o x1 hace referencia los elementos en forma
    individual
Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos Unidimensionales
    Los arreglos se almacenan en forma adyacente, así que su
     representación en memoria es:
      X0 ,Dirección z; X1 ,Dirección z+1; Xn ,Dirección z+n
    Cada elemento del arreglo se puede procesar como si fuera una
     variable simple.Ej:
       Suma         Suma + x[2]
       X[2]         15
       i        3
       X[i]         15
       X[i+2]   15
    Sobre los vectores se pueden realizar las siguientes operaciones:
     Lectura/Escritura, Asignación, Actualización(ins, eli, Mod),
     Ordenamiento y Búsqueda.
Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos Bidimensionales
  Estos arreglos constan de dos índices, tambien se llaman
   matrices.
 Notación: Podría ser de diferentes maneras. Por ej:

Array [0...2, 0...2] de enteros: Matriz
Matriz: M
  0 1 2               Indices
 34 43 90 0                   Operaciones: Lectura,
 83 2 41 1                      Escritura, Asignación.
56 75 3     2
Componentes
Estructuras de Datos
Tema: Memoria Estática
Subtema: Registros(Estructuras)
  Un registro es una colección de datos, que pueden ser de diferentes
   tipos. Cada uno de sus elementos se llama Campo.
 Notación: Podría ser de diferentes maneras. Por ej:

Tipo registro: Domicilio
   Entero: Calle                     Domicilio
   Entero: Numero
   Cadena: Ciudad           Calle Numero Ciudad
Fin Tipo
Domicilio: dir

    El acceso a los campos se hace así:
     variable_registro.id_campo.
    Por Ej: dir.Calle, dir.Numero, dir.Ciudad.
Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos y Registros
       Se pueden presentar las siguientes
        combinaciones:
 I.     Arreglos de Registros: Cada elemento
        del registro es un arreglo.
 Tipo registro: Cliente                      Vector
         Cadena: Nombre          N T       N T S          N T S
                                       S
         Cadena: Teléfono
         Real: Saldo                   0              1       2
 Fin Tipo
                                       Notación:
 Array [0...2] de Cliente: Vector
                                       Vector[0].Nombre
Estructuras de Datos
  Tema: Memoria Estática
  Subtema: Arreglos y Registros
  II.     Registro Anidado: Por lo menos un
          campo del registro es de tipo registro.
Tipo registro: Domicilio
        Entero: Calle                       Cliente
        Entero: Numero
        Cadena: Ciudad                     Dirección

Fin Tipo                     Nombre                        Saldo
                                       Cll Num Ciu
Tipo registro: Cliente
        Cadena: Nombre
        Domicilio: Dirección          Notación:
        Real: Saldo                   Cliente.Nombre
Fin Tipo                              Cliente.Dirección.Calle
Estructuras de Datos
     Tema: Memoria Estática
     Subtema: Arreglos y Registros
      III.    Registro con Arreglos: Por lo menos un
              campo del registro es un array.
Array [0...2] de Real:Vector
Tipo registro: Estudiante
        Cadena: Nombre                        Estudiante
        Cadena: Código                                         Notas
        Vector: Notas          Nombre     Código
Fin Tipo

                                        Notación:
                                        Estudiante.Nombre
                                        Estudiante. Notas[0]
Estructuras de Datos
    Tema: Memoria Dinámica
    Subtema: Apuntadores
   Las variables contienen valores especificos,
    las variables apuntador contienen direcciones
    de memoria de otras variables.
   La variable “ptrcont”           ptrcont
    contiene la dirección                               cont
                                     29DC
    de memoria de la                                     2
    variable “cont”
   Las variables apuntador estan asociadas a un tipo de dato.
    Por ej. Si el valor de cont es entero la variable apuntador
    ptrcont debe ser de tipo entero.
Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Apuntadores
   Operadores: Una variable apuntador responde a dos operadores:
      Operando de Dirección(&): Que devuelve la dirección de su

       operando. Por ej:
         Entero Y, *ptry
         Y        5
         Ptry     &Y
      Operando de Indirección(*) : Que devuelve el alias de su operando.

       Por ej:
         Entero Y, *ptry
         Y        5
         Ptry     &Y
         Escribir(*Ptry)
Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Asignación de Memoria

   Es el proceso por el cual a una estructura,
    sea cual fuere, se le coloca a apuntar una
    variable del mismo tipo y sobre ese
    apuntador se reserva o se libera memoria de
    acuerdo a si la estructura crece o decrece.
Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Conceptos de Listas
   Una lista es una colección de elementos, generalmente,
    llamados nodos.
   En gral un nodo tiene 2 partes:
      Un campo de info que será del tipo de datos que se

       quiera almacenar en la lista.
      Un campo de tipo apuntador que se utiliza para

       establecer un enlace con otro nodo de la lista. Si es el
       ultimo nodo su valor es null. Ya no es necesario que los
       nodos se guarden en forma contigua.
          ptrcont
                      5   .        7   .       null
Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Operaciones con Listas

   Crear: Define el primer elemento de la lista.
   Insertar: Que coloca nuevos nodos al principio o al
    final del nodo dado.
   Recorrer: Que “visita” o “atiende” todos o algunos
    de los nodos de la lista bajo un criterio dado.
   Eliminar: Que borra un nodo dado. Se puede
    eliminar el 1º nodo, el ultimo, el que tenga un info
    x o el anterior o posterior al que tenga una info x.
Estructuras de Datos
       Tema: Memoria Dinámica
       Subtema: Tipos de Listas
   Simplemente Encadenada           Circular
ptrcont
          5   .   7   .   null
                                  ptrcont
                                                 5   .      7   .
   Doblemente Encadenada            Circular Doblemente
                                      Encadenada
ptrcont
                                      ptrcont
null      . 5. . 7.        null
                                                . 5. . 7.
Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Listas de Acceso Restringido
   Pilas: Lista de elementos a la cuál se puede
    insertar o eliminar elementos únicamente por uno
    de sus extremos.
   Los elementos se eliminan en forma inversa a los
    que se insertaron, es decir, el ultimo elemento que
    ingresa es el primero que se elimina(LIFO).
   Se pueden representar con arreglos o listas.
        ptrcont
                  5   .   7   .   null
Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Listas de Acceso Restringido

 Colas: Lista de elementos en la que el
  primero en entrar es el primero en
  salir(FIFO).
 Se pueden representar con arreglos o
  listas.
Estructuras de Datos
    Tema: Memoria Dinámica
    Subtema: Arboles
 Son la estructura no-lineal más importante en
  computación.
 No-lineal porque a cada elemento(nodo) le
  pueden seguir varios elementos(nodos).
 Los arboles AVL(balanceados) son las mejores
  estructuras para trabajar con memoria principal.
 Los arboles B y los B+ son las mejores
  estructuras para trabajar en memoria secundaria.
Estructuras de Datos
    Tema: Memoria Dinámica
    Subtema: Conceptos de Arboles
   Es una estructura jerárquica aplicada sobre una
    colección de elementos llamados nodos. Uno de los
    cuales es llamado raíz.
   Además se crea una relación de parentesco entre los
    nodos de forma que hay términos como padre, hijo,
    hermano, antecesor, sucesor, ancestro, etc. Para definir
    un árbol se necesita recursión.
   Se utilizan para representar formulas matemáticas,
    organizar información, árboles genealógicos,
    enumeración de capítulos y secciones de un libro, etc.
Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Representación de Arboles
    Diagramas de Venn :
       A                C

       B    E           G

       D        F       H
       I    J       K   L


     Anidación de paréntesis :
       (A(B(D(I),E,F(J,K)),C(G,H(L))))

Estructuras de datos

  • 1.
    ESTRUCTURAS DE DATOSI Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos
  • 2.
    Estructuras de Datos:Conceptos  Conjunto de datos de tipos iguales o diferentes que se relacionan entre si y que se pueden operar como un todo. Datos Simples Hacen referencia a un único valor a la vez en memoria Entero, Real, Carácter, Lógico Estáticos Arreglos, Registros, Archivos, Cadenas Datos Estructurados Se refieren a un grupo de casillas de memoria Dinámicos Listas, Arboles, Grafos
  • 3.
    Estructuras de Datos:Implementación  Para implementar alguna estructura de datos, primero es necesario tener muy claro cómo va a ser el manejo de memoria.  La diferencia entre estructuras estáticas y dinámicas es el manejo de memoria. Estática Dinámica Durante la ejecución Durante la ejecución del programa el del programa el tamaño de la tamaño de la estructura no cambia estructura puede cambiar
  • 4.
    Estructuras de Datos Tema: Memoria Estática Subtema: Conceptos de Arreglos  Definición: Colección finita, homogenea y ordenada de elementos. Finita: Porque todo arreglo tiene un límite. Homogenea: Porque todos los elementos son del mismo tipo. Ordenada: Porque se puede determinar cuál es el enésimo elemento.  Un arreglo tiene dos partes: Componentes e índices C1 C2 .... Cn Componentes i0 i1 in Índices  Componentes: Hacen referencia a los elementos que forman el arreglo.  Índices: Permiten referirse a los componentes del arreglo en forma individual.
  • 5.
    Estructuras de Datos Tema:Memoria Estática Subtema: Arreglos Unidimensionales  Son los arreglos más simples y constan de un solo índice, tambien se llaman vectores.  Notación: Podría ser de diferentes maneras. Por ej: Array [0...9] de enteros: Vector Vector: x 14 43 .... 4 Componentes x0 x1 x9 Índices  X hace referencia a todo el vector, mientras que x0, o x1 hace referencia los elementos en forma individual
  • 6.
    Estructuras de Datos Tema:Memoria Estática Subtema: Arreglos Unidimensionales  Los arreglos se almacenan en forma adyacente, así que su representación en memoria es: X0 ,Dirección z; X1 ,Dirección z+1; Xn ,Dirección z+n  Cada elemento del arreglo se puede procesar como si fuera una variable simple.Ej: Suma Suma + x[2] X[2] 15 i 3 X[i] 15 X[i+2] 15  Sobre los vectores se pueden realizar las siguientes operaciones: Lectura/Escritura, Asignación, Actualización(ins, eli, Mod), Ordenamiento y Búsqueda.
  • 7.
    Estructuras de Datos Tema:Memoria Estática Subtema: Arreglos Bidimensionales  Estos arreglos constan de dos índices, tambien se llaman matrices.  Notación: Podría ser de diferentes maneras. Por ej: Array [0...2, 0...2] de enteros: Matriz Matriz: M 0 1 2 Indices 34 43 90 0  Operaciones: Lectura, 83 2 41 1 Escritura, Asignación. 56 75 3 2 Componentes
  • 8.
    Estructuras de Datos Tema:Memoria Estática Subtema: Registros(Estructuras)  Un registro es una colección de datos, que pueden ser de diferentes tipos. Cada uno de sus elementos se llama Campo.  Notación: Podría ser de diferentes maneras. Por ej: Tipo registro: Domicilio Entero: Calle Domicilio Entero: Numero Cadena: Ciudad Calle Numero Ciudad Fin Tipo Domicilio: dir  El acceso a los campos se hace así: variable_registro.id_campo.  Por Ej: dir.Calle, dir.Numero, dir.Ciudad.
  • 9.
    Estructuras de Datos Tema:Memoria Estática Subtema: Arreglos y Registros  Se pueden presentar las siguientes combinaciones: I. Arreglos de Registros: Cada elemento del registro es un arreglo. Tipo registro: Cliente Vector Cadena: Nombre N T N T S N T S S Cadena: Teléfono Real: Saldo 0 1 2 Fin Tipo Notación: Array [0...2] de Cliente: Vector Vector[0].Nombre
  • 10.
    Estructuras de Datos Tema: Memoria Estática Subtema: Arreglos y Registros II. Registro Anidado: Por lo menos un campo del registro es de tipo registro. Tipo registro: Domicilio Entero: Calle Cliente Entero: Numero Cadena: Ciudad Dirección Fin Tipo Nombre Saldo Cll Num Ciu Tipo registro: Cliente Cadena: Nombre Domicilio: Dirección Notación: Real: Saldo Cliente.Nombre Fin Tipo Cliente.Dirección.Calle
  • 11.
    Estructuras de Datos Tema: Memoria Estática Subtema: Arreglos y Registros III. Registro con Arreglos: Por lo menos un campo del registro es un array. Array [0...2] de Real:Vector Tipo registro: Estudiante Cadena: Nombre Estudiante Cadena: Código Notas Vector: Notas Nombre Código Fin Tipo Notación: Estudiante.Nombre Estudiante. Notas[0]
  • 12.
    Estructuras de Datos Tema: Memoria Dinámica Subtema: Apuntadores  Las variables contienen valores especificos, las variables apuntador contienen direcciones de memoria de otras variables.  La variable “ptrcont” ptrcont contiene la dirección cont 29DC de memoria de la 2 variable “cont”  Las variables apuntador estan asociadas a un tipo de dato. Por ej. Si el valor de cont es entero la variable apuntador ptrcont debe ser de tipo entero.
  • 13.
    Estructuras de Datos Tema:Memoria Dinámica Subtema: Apuntadores  Operadores: Una variable apuntador responde a dos operadores:  Operando de Dirección(&): Que devuelve la dirección de su operando. Por ej: Entero Y, *ptry Y 5 Ptry &Y  Operando de Indirección(*) : Que devuelve el alias de su operando. Por ej: Entero Y, *ptry Y 5 Ptry &Y Escribir(*Ptry)
  • 14.
    Estructuras de Datos Tema:Memoria Dinámica Subtema: Asignación de Memoria  Es el proceso por el cual a una estructura, sea cual fuere, se le coloca a apuntar una variable del mismo tipo y sobre ese apuntador se reserva o se libera memoria de acuerdo a si la estructura crece o decrece.
  • 15.
    Estructuras de Datos Tema:Memoria Dinámica Subtema: Conceptos de Listas  Una lista es una colección de elementos, generalmente, llamados nodos.  En gral un nodo tiene 2 partes:  Un campo de info que será del tipo de datos que se quiera almacenar en la lista.  Un campo de tipo apuntador que se utiliza para establecer un enlace con otro nodo de la lista. Si es el ultimo nodo su valor es null. Ya no es necesario que los nodos se guarden en forma contigua. ptrcont 5 . 7 . null
  • 16.
    Estructuras de Datos Tema:Memoria Dinámica Subtema: Operaciones con Listas  Crear: Define el primer elemento de la lista.  Insertar: Que coloca nuevos nodos al principio o al final del nodo dado.  Recorrer: Que “visita” o “atiende” todos o algunos de los nodos de la lista bajo un criterio dado.  Eliminar: Que borra un nodo dado. Se puede eliminar el 1º nodo, el ultimo, el que tenga un info x o el anterior o posterior al que tenga una info x.
  • 17.
    Estructuras de Datos Tema: Memoria Dinámica Subtema: Tipos de Listas  Simplemente Encadenada  Circular ptrcont 5 . 7 . null ptrcont 5 . 7 .  Doblemente Encadenada  Circular Doblemente Encadenada ptrcont ptrcont null . 5. . 7. null . 5. . 7.
  • 18.
    Estructuras de Datos Tema:Memoria Dinámica Subtema: Listas de Acceso Restringido  Pilas: Lista de elementos a la cuál se puede insertar o eliminar elementos únicamente por uno de sus extremos.  Los elementos se eliminan en forma inversa a los que se insertaron, es decir, el ultimo elemento que ingresa es el primero que se elimina(LIFO).  Se pueden representar con arreglos o listas. ptrcont 5 . 7 . null
  • 19.
    Estructuras de Datos Tema:Memoria Dinámica Subtema: Listas de Acceso Restringido  Colas: Lista de elementos en la que el primero en entrar es el primero en salir(FIFO).  Se pueden representar con arreglos o listas.
  • 20.
    Estructuras de Datos Tema: Memoria Dinámica Subtema: Arboles  Son la estructura no-lineal más importante en computación.  No-lineal porque a cada elemento(nodo) le pueden seguir varios elementos(nodos).  Los arboles AVL(balanceados) son las mejores estructuras para trabajar con memoria principal.  Los arboles B y los B+ son las mejores estructuras para trabajar en memoria secundaria.
  • 21.
    Estructuras de Datos Tema: Memoria Dinámica Subtema: Conceptos de Arboles  Es una estructura jerárquica aplicada sobre una colección de elementos llamados nodos. Uno de los cuales es llamado raíz.  Además se crea una relación de parentesco entre los nodos de forma que hay términos como padre, hijo, hermano, antecesor, sucesor, ancestro, etc. Para definir un árbol se necesita recursión.  Se utilizan para representar formulas matemáticas, organizar información, árboles genealógicos, enumeración de capítulos y secciones de un libro, etc.
  • 22.
    Estructuras de Datos Tema:Memoria Dinámica Subtema: Representación de Arboles  Diagramas de Venn : A C B E G D F H I J K L  Anidación de paréntesis :  (A(B(D(I),E,F(J,K)),C(G,H(L))))