87

Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Proceso de Admisión 2019

Curso de Programación Básica

Dr. Edwyn Javier Aldana Bobadilla

Page 2: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Temas:

1. Estructuras de datos

1.1 Uso y manejo de memoria: apuntadores en C

1.2 Variables y tipos de datos

1.3 Estructuras/Registros

1.4 Principales operaciones

1/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 3: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

En esta sección se revisará formalmente el concepto de Tipo de Dato

Abstracto (TDA) el cual es uno de los elementos fundamentales

en las ciencias de computación y programación. Posteriormente se

presentará una revisión de las estructuras de datos más comunes

modeladas y de�nidas en términos de TDAs. Los estudiantes deberán

realizar algunas implementaciones de dichas estructuras.

2/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 4: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Las computadoras procesan cadenas conformadas por 1s y 0s,

las cuales representan datos e instrucciones para ser ejecutadas

por un microprocesador.

• En los inicios de la computación, los problemas eran

planteados a la computadora a través de esta representación.

• La complejidad de problemas generó la necesidad de crear

mecanismos que incorporaran representaciones más cercanas al

lenguaje natural (lenguajes de programación).

3/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 5: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Las computadoras procesan cadenas conformadas por 1s y 0s,

las cuales representan datos e instrucciones para ser ejecutadas

por un microprocesador.

• En los inicios de la computación, los problemas eran

planteados a la computadora a través de esta representación.

• La complejidad de problemas generó la necesidad de crear

mecanismos que incorporaran representaciones más cercanas al

lenguaje natural (lenguajes de programación).

3/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 6: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Las computadoras procesan cadenas conformadas por 1s y 0s,

las cuales representan datos e instrucciones para ser ejecutadas

por un microprocesador.

• En los inicios de la computación, los problemas eran

planteados a la computadora a través de esta representación.

• La complejidad de problemas generó la necesidad de crear

mecanismos que incorporaran representaciones más cercanas al

lenguaje natural (lenguajes de programación).

3/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 7: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Un lenguaje de programación especifíca la forma en que los

datos y las instrucciones deben ser especi�cados(gramática del

lenguaje).

• La especi�cación de los datos de�ne lo que se denomina tipo

de dato, que no es más que la forma en la que cadena binaria

que representa un dato debe ser interpretada.

• Una interpretación básica podría ser un número real, entero o

un caractér.

• Esta interpretación se conoce como tipo de dato primitivo.

4/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 8: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Un lenguaje de programación especifíca la forma en que los

datos y las instrucciones deben ser especi�cados(gramática del

lenguaje).

• La especi�cación de los datos de�ne lo que se denomina tipo

de dato, que no es más que la forma en la que cadena binaria

que representa un dato debe ser interpretada.

• Una interpretación básica podría ser un número real, entero o

un caractér.

• Esta interpretación se conoce como tipo de dato primitivo.

4/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 9: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Un lenguaje de programación especifíca la forma en que los

datos y las instrucciones deben ser especi�cados(gramática del

lenguaje).

• La especi�cación de los datos de�ne lo que se denomina tipo

de dato, que no es más que la forma en la que cadena binaria

que representa un dato debe ser interpretada.

• Una interpretación básica podría ser un número real, entero o

un caractér.

• Esta interpretación se conoce como tipo de dato primitivo.

4/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 10: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Un lenguaje de programación especifíca la forma en que los

datos y las instrucciones deben ser especi�cados(gramática del

lenguaje).

• La especi�cación de los datos de�ne lo que se denomina tipo

de dato, que no es más que la forma en la que cadena binaria

que representa un dato debe ser interpretada.

• Una interpretación básica podría ser un número real, entero o

un caractér.

• Esta interpretación se conoce como tipo de dato primitivo.

4/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 11: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Es posible de�nir tipos de dato más complejos a través de un

Tipo Abstracto de Dato (TDA).

• El término abstracción se re�ere a que dicha de�nición es una

simpli�cación de la realidad que considera solamente las

propiedades y aspectos funcionales más importantes del tipo

de dato requerido.

• Un TDA especi�ca los posibles valores y las operaciones del

tipo de dato a ser de�nido.

• La especi�cación de un TDA es invariante a detalles de

implementación propios del lenguaje de programación.

5/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 12: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Es posible de�nir tipos de dato más complejos a través de un

Tipo Abstracto de Dato (TDA).

• El término abstracción se re�ere a que dicha de�nición es una

simpli�cación de la realidad que considera solamente las

propiedades y aspectos funcionales más importantes del tipo

de dato requerido.

• Un TDA especi�ca los posibles valores y las operaciones del

tipo de dato a ser de�nido.

• La especi�cación de un TDA es invariante a detalles de

implementación propios del lenguaje de programación.

5/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 13: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Es posible de�nir tipos de dato más complejos a través de un

Tipo Abstracto de Dato (TDA).

• El término abstracción se re�ere a que dicha de�nición es una

simpli�cación de la realidad que considera solamente las

propiedades y aspectos funcionales más importantes del tipo

de dato requerido.

• Un TDA especi�ca los posibles valores y las operaciones del

tipo de dato a ser de�nido.

• La especi�cación de un TDA es invariante a detalles de

implementación propios del lenguaje de programación.

5/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 14: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Preliminares

• Es posible de�nir tipos de dato más complejos a través de un

Tipo Abstracto de Dato (TDA).

• El término abstracción se re�ere a que dicha de�nición es una

simpli�cación de la realidad que considera solamente las

propiedades y aspectos funcionales más importantes del tipo

de dato requerido.

• Un TDA especi�ca los posibles valores y las operaciones del

tipo de dato a ser de�nido.

• La especi�cación de un TDA es invariante a detalles de

implementación propios del lenguaje de programación.

5/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 15: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

La especi�cación de un TDA describe los posibles valores y las opera-

ciones asociadas al tipo. Si bien no existe una notación estandarizada,

aqui se utilizará la siguiente notación.

6/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 16: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

TDA_<name>(values:<domain>;operations: < op1, op2, ..., opn >)Sintaxis:

Especi�cación de las operaciones<operation-name> (<argumentos>) =⇒<Tipo Resultado>

Semántica:Expresiones de casos base<operation-name> (<valores particulares>) =⇒< Resultado>

7/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 17: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

La especi�cación de un TDA describe los posibles valores y las opera-

ciones asociadas al tipo. Si bien no existe una notación estandarizada,

aqui se utilizará la siguiente notación.

8/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 18: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

TDA_Boolean(values:{True, False};operations:Not,And,Or, Implication, Iff)

Sintaxis:∗True =⇒ Boolean∗False =⇒ BooleanNot(Boolean) =⇒ BooleanAnd(Boolean,Boolean) =⇒ BooleanOr(Boolean,Boolean) =⇒ BooleanImplication(Boolean,Boolean) =⇒ BooleanI�(Boolean,Boolean) =⇒ Boolean

9/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 19: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

Semántica:∀e de tipo BooleanNot(True) =⇒ FalseNot(False) =⇒ TrueAnd(e, T rue) =⇒ eAnd(e, False) =⇒ FalseOr(e, T rue) =⇒ TrueOr(e, False) =⇒ eImplication(True, e) =⇒ eImplication(False, e) =⇒ TrueI�(True, True) =⇒ TrueI�(False, False) =⇒ FalseI�(True, False) =⇒ FalseI�(False, True) =⇒ False

10/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 20: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

Ejercicio: Realizar la implementación del TDA Boolean utilizando

lenguaje C

11/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 21: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

Ejercicio: De�nir un TDA para números enteros. Dado el TDA reali-

zar la implementación usando el lenguaje C. Con dicha implementa-

ción, veri�car las sentencias de�nidas en la semántica.

12/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 22: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Tipo de Dato Abstracto (TDA)

Especi�cación formal de un TDA

TDA_Integer(values: Set of integer numbers Zoperations:Zero, Successor, Predecessor, Sum,Diff, Product)

Sintaxis:∗Zero =⇒ Integer∗Successor(Integer) =⇒ Integer∗Predecessor(Integer) =⇒ IntegerSum(Integer, Integer) =⇒ IntegerDi�(Integer, Integer) =⇒ IntegerProduct(Integer, Integer) =⇒ Integer

Semántica:∀m,n ∈ ZSuccesor(Predecessor(n)) =⇒ nPredecessor(Successor(n)) =⇒ nSum(n,Zero) =⇒ nSum(n, Succesor(m)) =⇒ Succesor(Sum(n,m))Sum(n, Predecessor(m)) =⇒ Predecessor(Sum(n,m))Di�(n,Zero) =⇒ nDi�(n, Succesor(m)) =⇒ Predecessor(Diff(n,m))Di�(n, Predecessor(m)) =⇒ Succesor(Diff(n,m))Product(n,Zero) =⇒ ZeroProduct(n, Succesor(m)) =⇒ Suma(Product(n,m), n)Product(n, Predecessor(m)) =⇒ Diff(Product(n,m), n)

13/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 23: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Una estructura de datos de�ne de manera abstracta la forma en

que los datos deben ser organizados con el propósito de almacenar-

los, consultarlos y modi�carlos de manera e�ciente. Tal de�nición

es posible en los términos de un TDA. La implementación de di-

cho TDA, determinará la forma física (dependiendo el lenguaje de

programación) en que la estructura será almacenada en memoria.

En las siguientes secciones se revisaran las estructuras de datos más

utlizadas en el contexto de la programación las cuales se han sub-

dividido en dos tipos: 1) Estructuras Lineales y 2) Estructuras

No-Lineales.

14/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 24: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Se denominarán estructuras lineales a aquellas en las que sus ele-

mentos son colocados de manera contigua (al menos desde el punto

de vista lógico). Los arreglos, las listas y las pilas son representantes

de esta categoría.

Logotipo.

15/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 25: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Lista Enlazada SimpleEstructura de datos conformada por una colección de elementos con-

tiguos denominados nodos. Un nodo es un registro conformado por

un campo de datos y un campo apuntador, el cual almacena la di-

rección del nodo sucesor o siguiente.

Figura 1: Ilustración de un nodo

16/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 26: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

• Existe un nodo especial o nodo base denominado head a

través del cual se pueden agregar nodos y tener acceso a estos.

• El nodo head no contiene datos, solo contiene la dirección al

primer nodo o elemento de la lista.

• Cuando la lista está vacia solo existirá el nodo head

apuntando a una dirección vacia o nula (denotada como NIL).

• Si existe uno o más nodos el nodo head apuntará al primer

elemento o nodo de la lista.

• El nodo terminal de la lista siempre apuntará a una dirección

de memoria vacia (NIL).

17/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 27: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

• Existe un nodo especial o nodo base denominado head a

través del cual se pueden agregar nodos y tener acceso a estos.

• El nodo head no contiene datos, solo contiene la dirección al

primer nodo o elemento de la lista.

• Cuando la lista está vacia solo existirá el nodo head

apuntando a una dirección vacia o nula (denotada como NIL).

• Si existe uno o más nodos el nodo head apuntará al primer

elemento o nodo de la lista.

• El nodo terminal de la lista siempre apuntará a una dirección

de memoria vacia (NIL).

17/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 28: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

• Existe un nodo especial o nodo base denominado head a

través del cual se pueden agregar nodos y tener acceso a estos.

• El nodo head no contiene datos, solo contiene la dirección al

primer nodo o elemento de la lista.

• Cuando la lista está vacia solo existirá el nodo head

apuntando a una dirección vacia o nula (denotada como NIL).

• Si existe uno o más nodos el nodo head apuntará al primer

elemento o nodo de la lista.

• El nodo terminal de la lista siempre apuntará a una dirección

de memoria vacia (NIL).

17/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 29: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

• Existe un nodo especial o nodo base denominado head a

través del cual se pueden agregar nodos y tener acceso a estos.

• El nodo head no contiene datos, solo contiene la dirección al

primer nodo o elemento de la lista.

• Cuando la lista está vacia solo existirá el nodo head

apuntando a una dirección vacia o nula (denotada como NIL).

• Si existe uno o más nodos el nodo head apuntará al primer

elemento o nodo de la lista.

• El nodo terminal de la lista siempre apuntará a una dirección

de memoria vacia (NIL).

17/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 30: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

• Existe un nodo especial o nodo base denominado head a

través del cual se pueden agregar nodos y tener acceso a estos.

• El nodo head no contiene datos, solo contiene la dirección al

primer nodo o elemento de la lista.

• Cuando la lista está vacia solo existirá el nodo head

apuntando a una dirección vacia o nula (denotada como NIL).

• Si existe uno o más nodos el nodo head apuntará al primer

elemento o nodo de la lista.

• El nodo terminal de la lista siempre apuntará a una dirección

de memoria vacia (NIL).

17/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 31: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Una lista enlazada simple es una colección de nodos interconecta-

dos mendiate apuntadores unidireccionales tal como se ilustra en la

Figura 2.

Figura 2: Tres posibles estados de una lista de enlace simple

18/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 32: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

A continuación se especi�ca formalmente una lista de enlace simplea través del TDA SingleLinkedList.

TDA_SingleLinkedList(values: Set of integer numbers Zoperations: Create, Push,AddIn, Pop,RemoveIn, Print)

Sintaxis:∗Create =⇒ SingleLinkedListPush(SingleLinkedList, Integer) =⇒ SingleLinkedListAddIn(SingleLinkedList, Integer, Integer) =⇒ SingleLinkedListPop(SingleLinkedList) =⇒ SingleLinkedListRemoveIn(SingleLinkedList, Integer) =⇒ SingleLinkedListLength(SingleLinkedList) =⇒ Integer

19/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 33: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Semántica: Let L = {Φ} be an empty single linked list. Let i, x, y, z be elements in ZPush(L, y) =⇒ L = {y}Push(L, x) =⇒ L = {x, y}AddIn(L, x,−1) =⇒ ErrorAddIn(L, z, 0) =⇒ L = {z, y, x}AddIn(L, x, 1) =⇒ L = {z, x, y, x}AddIn(L, y, Length(L)) =⇒ ErrorAddIn(L, y, Length(L)− 1) =⇒ L = {z, x, y, x, y}Pop(L) =⇒ L = {x, y, x, y}RemoveIn(L,−1) =⇒ ErrorRemoveIn(L, 0) =⇒ L = {y, x}Push(L, x) =⇒ L = {x, y, x}RemoveIn(L, x, 1) =⇒ L = {x, x}RemoveIn(L, y, Length(L)) =⇒ ErrorRemoveIn(L, y, Length(L)− 1) =⇒ L = {x}

Nótese que el TDA no se especifíca la estructura de los nodos de la lista. Esta de�niciónhace parte de la implementación.

20/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 34: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Ejercicio: Dado el TDA para la lista de enlace simple, realizar la

implementación usando el lenguaje C. Con dicha implementación,

veri�car las sentencias de�nidas en la semántica.

21/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 35: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Lista Enlazada DobleEs una colección de nodos contiguos en la que cada uno de estos al-

macena dos direcciones: 1) dirección al nodo siguiente y 2) dirección

al nodo anterior o precedente.

Figura 3: Ilustración de un nodo en una lista enlazada doble

22/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 36: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Existen dos nodos especiales: head y tail que solo almacenan direc-

ciones de memoria. Cuando la lista esta vacia, estos nodos apuntaran

a NIL.

Figura 4: Ilustración de lista enlazada doble vacía

23/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 37: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Cuando un nodo x va a ser adicionado, head deberá apuntar a dicho

nodo. Los apuntadores predecesor y sucesor del nodo x apuntarán

a una dirección vacía (NIL). Finalmente el apuntador tail deberá

apuntar a x.

Figura 5: Ilustración de lista enlazada doble con un elemento

24/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 38: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Conceptualmente, una lista enlazada doble tendrá las mismas opera-

ciones que una lista enlazada simple, la diferencia está en la forma en

que dichas operaciones son implementadas debido a los apuntadores

que permiten a un nodo tener referencias en dos direcciones (prede-

cesor y sucesor). Formalmente una lista enlazada puede ser de�nida

en términos de un TDA como el que se muestra a continuación:

25/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 39: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

PilaLa pila es una estructura de datos en la cual se insertan o eliminan

elementos exclusivamente por uno de los extremos denominado tope.

En función a está restricción, su comportamiento se describe como

LIFO (Last In ,First Out).

26/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 40: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Figura 6: Ilustración de una pila

27/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 41: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Una pila puede ser implementada a través de arreglos en cuyo caso es

necesario limitar el máximo número de elementos que la pila podrá

almacenar (lo cual representa un desventaja). Otra opción es a través

de lista enlazadas que le permiten crecer de manera dinámica.

28/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 42: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

A continuación de presenta una especi�cación formal de la pila através del TDA Stack.

TDA_Stack(values: Objects of type Elementoperations: Create, IsEmpty, Push, Pop, Size,Get)

Sintaxis:∗Create =⇒ StackIsEmpty(Stack) =⇒ BooleanPush(Stack,Element) =⇒ StackPop(Stack) =⇒ ElementSize(Stack) =⇒ IntegerGet(Stack) =⇒ Element

Semántica: Let P = {Φ} be an empty stack. Let i, x, y, z be elementsPush(P, y) =⇒ P = {y}Push(P, x) =⇒ P = {x, y}Pop(P ) =⇒ P = {y}IsEmpty(Pop(P )) =⇒ TrueGet(P ) =⇒ ErrorSize(P ) =⇒ ZeroPush(P, y) =⇒ P = {y}Get(P ) =⇒ x

29/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 43: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Ejercicio: Utilizando la implementación de la lista doblemente enla-

zada, realizar la implementación de la estructura de Pila basada en

el TDA Stack.

30/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 44: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Expresiones Aritméticas yPilas

Las expresiones aritméticas pueden representarse en las siguientes

notaciones

• Notación In�ja: a+b

• Notación Post�ja: ab+

• Notación Pre�ja: +ab

31/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 45: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Expresiones Aritméticas yPilas

Las expresiones aritméticas pueden representarse en las siguientes

notaciones

• Notación In�ja: a+b

• Notación Post�ja: ab+

• Notación Pre�ja: +ab

31/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 46: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Expresiones Aritméticas yPilas

Las expresiones aritméticas pueden representarse en las siguientes

notaciones

• Notación In�ja: a+b

• Notación Post�ja: ab+

• Notación Pre�ja: +ab

31/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 47: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Figura 7: Notaciones aritméticas

32/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 48: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Para transformar una expresión de notación in�ja a post�ja se utilizauna pila y se recorren los elementos de la expresión considerando:

1. Si el elemento es el operador ( se ignora.

2. Si el elemento es el operador ) se saca el elemento top de la pila y se imprime enla salida.

3. Si el elemento e es un operando se imprime directamente como salida.

4. Si el elemento e es un operador y la pila está vacia se agrega dicho elemento ala pila.

5. Si el elemento e es un operador y la pila no esta está vacia se compara con eltop de la pila. Si top � e se saca top de la pila y se imprime en la salida, de locontrario e se agrega a la pila.

6. Si la pila no esta vacia, se sacan uno a uno sus elementos para imprimirlos en lasalida.

33/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 49: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Para transformar una expresión de notación in�ja a pre�ja:

1. Se transforma la expresión in�ja a una expresión inversa (e.g.

A+B ∗ C −→ C ∗B +A). Cuando la expresión contiene

paréntesis '(' se tranforma en ')' y viceversa.

2. Obtener la expresión post�ja de la expresión inversa.

3. Invertir nuevamente la expresión resultante.

34/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 50: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Ejercicio: Crear un programa que permita transformar un expresión

in�ja en post�ja. Utilizar la estructura de pila implementada en ejer-

cicios anteriores.

35/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 51: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Cola• Una cola se puede de�nir como una colección de elementos en la que se

introducen elementos por un extremo y se eliminan por el otro. Debido al ordencon el cual se insertan o eliminan estos elementos el comportamiento de unacola se conoce como FIFO (First Input, First Output).

• Las operaciones importantes son: insertar elemento la cual típicamente seconoce como enqueue y eliminar conocido como dequeue. Para laimplementación de una cola se puede utilizar una lista simplemente enlazada.

36/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 52: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Cola• Una cola se puede de�nir como una colección de elementos en la que se

introducen elementos por un extremo y se eliminan por el otro. Debido al ordencon el cual se insertan o eliminan estos elementos el comportamiento de unacola se conoce como FIFO (First Input, First Output).

• Las operaciones importantes son: insertar elemento la cual típicamente seconoce como enqueue y eliminar conocido como dequeue. Para laimplementación de una cola se puede utilizar una lista simplemente enlazada.

36/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 53: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras de Datos Lineales

Ejercicio: De�nir el TDA denominado TDA_Queue con las ope-

raciones enqueue and dequeue. Utilizando la implementación de

la lista simplemente enlazada realizar la implementación para un

TDA_Queue.

37/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 54: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles• En general un árbol es una estructura de datos jerárquica compuesta por

elementos denominados nodos.

• El primer nodo de la jerarquía es llamado nodo raiz.• Desde el punto de vista conceptual los nodos se contectan entre sí por medio de

aristas que de�nen una relación de parentesco, dando lugar a términos comopadre, hijo, hermano, antecesor, sucesor, etc.

• Los nodos que no tienen descendencia se llaman nodos terminales u hojas.

38/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 55: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles• En general un árbol es una estructura de datos jerárquica compuesta por

elementos denominados nodos.• El primer nodo de la jerarquía es llamado nodo raiz.

• Desde el punto de vista conceptual los nodos se contectan entre sí por medio dearistas que de�nen una relación de parentesco, dando lugar a términos comopadre, hijo, hermano, antecesor, sucesor, etc.

• Los nodos que no tienen descendencia se llaman nodos terminales u hojas.

38/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 56: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles• En general un árbol es una estructura de datos jerárquica compuesta por

elementos denominados nodos.• El primer nodo de la jerarquía es llamado nodo raiz.• Desde el punto de vista conceptual los nodos se contectan entre sí por medio de

aristas que de�nen una relación de parentesco, dando lugar a términos comopadre, hijo, hermano, antecesor, sucesor, etc.

• Los nodos que no tienen descendencia se llaman nodos terminales u hojas.

38/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 57: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles• En general un árbol es una estructura de datos jerárquica compuesta por

elementos denominados nodos.• El primer nodo de la jerarquía es llamado nodo raiz.• Desde el punto de vista conceptual los nodos se contectan entre sí por medio de

aristas que de�nen una relación de parentesco, dando lugar a términos comopadre, hijo, hermano, antecesor, sucesor, etc.

• Los nodos que no tienen descendencia se llaman nodos terminales u hojas.

38/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 58: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles binarios• Existe un tipo particular de arból denominado árbol binario en el cual todos su

nodos tienen dos hijos como máximo.

• Una de las operaciones más importantes es el recorrido, el cual consiste envisitar cada nodo de forma sistemática. Existen tres tipos de recorrido:

• Preorden: Consiste en visitar la raiz, recorrer en preorden (recursivamente) elsubárbol izquierdo y recorrer en preorden el subárbol derecho (raiz, izq, der).

• Inorden: Recorrer el subárbol izquierdo, visitar la raiz y recorrer el subárbolderecho. Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, raiz, der).

• Postorden: Recorrer el subárbol izquierdo, recorrer el subárbol derecho y visitarla raiz . Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, der, raiz).

39/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 59: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles binarios• Existe un tipo particular de arból denominado árbol binario en el cual todos su

nodos tienen dos hijos como máximo.• Una de las operaciones más importantes es el recorrido, el cual consiste en

visitar cada nodo de forma sistemática. Existen tres tipos de recorrido:

• Preorden: Consiste en visitar la raiz, recorrer en preorden (recursivamente) elsubárbol izquierdo y recorrer en preorden el subárbol derecho (raiz, izq, der).

• Inorden: Recorrer el subárbol izquierdo, visitar la raiz y recorrer el subárbolderecho. Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, raiz, der).

• Postorden: Recorrer el subárbol izquierdo, recorrer el subárbol derecho y visitarla raiz . Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, der, raiz).

39/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 60: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles binarios• Existe un tipo particular de arból denominado árbol binario en el cual todos su

nodos tienen dos hijos como máximo.• Una de las operaciones más importantes es el recorrido, el cual consiste en

visitar cada nodo de forma sistemática. Existen tres tipos de recorrido:• Preorden: Consiste en visitar la raiz, recorrer en preorden (recursivamente) el

subárbol izquierdo y recorrer en preorden el subárbol derecho (raiz, izq, der).

• Inorden: Recorrer el subárbol izquierdo, visitar la raiz y recorrer el subárbolderecho. Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, raiz, der).

• Postorden: Recorrer el subárbol izquierdo, recorrer el subárbol derecho y visitarla raiz . Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, der, raiz).

39/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 61: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles binarios• Existe un tipo particular de arból denominado árbol binario en el cual todos su

nodos tienen dos hijos como máximo.• Una de las operaciones más importantes es el recorrido, el cual consiste en

visitar cada nodo de forma sistemática. Existen tres tipos de recorrido:• Preorden: Consiste en visitar la raiz, recorrer en preorden (recursivamente) el

subárbol izquierdo y recorrer en preorden el subárbol derecho (raiz, izq, der).• Inorden: Recorrer el subárbol izquierdo, visitar la raiz y recorrer el subárbol

derecho. Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, raiz, der).

• Postorden: Recorrer el subárbol izquierdo, recorrer el subárbol derecho y visitarla raiz . Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, der, raiz).

39/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 62: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles binarios• Existe un tipo particular de arból denominado árbol binario en el cual todos su

nodos tienen dos hijos como máximo.• Una de las operaciones más importantes es el recorrido, el cual consiste en

visitar cada nodo de forma sistemática. Existen tres tipos de recorrido:• Preorden: Consiste en visitar la raiz, recorrer en preorden (recursivamente) el

subárbol izquierdo y recorrer en preorden el subárbol derecho (raiz, izq, der).• Inorden: Recorrer el subárbol izquierdo, visitar la raiz y recorrer el subárbol

derecho. Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, raiz, der).

• Postorden: Recorrer el subárbol izquierdo, recorrer el subárbol derecho y visitarla raiz . Los recorridos de los subárboles (izquierdo y derecho) se realizanrecursivamente siguiendo el recorrido mencionado (izq, der, raiz).

39/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 63: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Ejercicio: Realizar los recorridos preorden, inorden y postorden del árbol de la Figura8a.

(a) Árbol binario de búsqueda

40/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 64: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Ejercicio Crear el TDA_BinaryTree que permita de�nir un árbol binario con lassiguientes operaciones create, append, remove y print. La operación print deberá darla opción de mostrar el árbol en un recorrido seleccionado por el usuario (preorden,inorden, postorden). Con base en el TDA anterior realizar la implementación en C.

41/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 65: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árbol Binario de Búsqueda• Los árboles binarios de búsqueda se utilizan para almacenar y tener acceso

rápido a la información.

• Para todo nodo x en el árbol los valores de todos los nodos de su subárbolizquierdo son menores que el valor de x.

• Para todo nodo x los valores de todos los nodos de su subárbol derecho sonmayores que el valor de x.

• No se almacenan nodos con información repetida. Si la información del nodo aagregar se encuentra en el árbol simplemente no se agrega.

42/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 66: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árbol Binario de Búsqueda• Los árboles binarios de búsqueda se utilizan para almacenar y tener acceso

rápido a la información.• Para todo nodo x en el árbol los valores de todos los nodos de su subárbol

izquierdo son menores que el valor de x.

• Para todo nodo x los valores de todos los nodos de su subárbol derecho sonmayores que el valor de x.

• No se almacenan nodos con información repetida. Si la información del nodo aagregar se encuentra en el árbol simplemente no se agrega.

42/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 67: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árbol Binario de Búsqueda• Los árboles binarios de búsqueda se utilizan para almacenar y tener acceso

rápido a la información.• Para todo nodo x en el árbol los valores de todos los nodos de su subárbol

izquierdo son menores que el valor de x.• Para todo nodo x los valores de todos los nodos de su subárbol derecho son

mayores que el valor de x.

• No se almacenan nodos con información repetida. Si la información del nodo aagregar se encuentra en el árbol simplemente no se agrega.

42/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 68: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árbol Binario de Búsqueda• Los árboles binarios de búsqueda se utilizan para almacenar y tener acceso

rápido a la información.• Para todo nodo x en el árbol los valores de todos los nodos de su subárbol

izquierdo son menores que el valor de x.• Para todo nodo x los valores de todos los nodos de su subárbol derecho son

mayores que el valor de x.• No se almacenan nodos con información repetida. Si la información del nodo a

agregar se encuentra en el árbol simplemente no se agrega.

42/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 69: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Figura 9: Árbol binario de búsqueda

43/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 70: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Como operaciones básicas de un árbol binario se tienen:1. Buscar: Sea z un elemento para ser buscado en un árbol T . Para realizar una

búsqueda se compara z con el elemento del nodo raiz de T . Si z es menor, sesigue buscando únicamente dentro del subárbol izquierdo, en otro caso solo seconsiderará el subárbol derecho. Este proceso continúa hasta encontrar z ohasta alcanzar un nodo terminal sin haber tenido éxito en la búsqueda.

2. Insertar: Siempre el primer elemento se almacenará en la raiz del árbol. Parainsertar un elemento adicional en el árbol se debe determinar la posición que lecorresponde, a través del proceso de búsqueda. Si se encuentra el elemento, nose inserta y el proceso de inserción �naliza. En otro caso, se inserta a laizquierda o a la derecha del nodo terminal alcanzado, dependiendo si elelemento a agregar es mayor o menor.

44/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 71: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Como operaciones básicas de un árbol binario se tienen:1. Buscar: Sea z un elemento para ser buscado en un árbol T . Para realizar una

búsqueda se compara z con el elemento del nodo raiz de T . Si z es menor, sesigue buscando únicamente dentro del subárbol izquierdo, en otro caso solo seconsiderará el subárbol derecho. Este proceso continúa hasta encontrar z ohasta alcanzar un nodo terminal sin haber tenido éxito en la búsqueda.

2. Insertar: Siempre el primer elemento se almacenará en la raiz del árbol. Parainsertar un elemento adicional en el árbol se debe determinar la posición que lecorresponde, a través del proceso de búsqueda. Si se encuentra el elemento, nose inserta y el proceso de inserción �naliza. En otro caso, se inserta a laizquierda o a la derecha del nodo terminal alcanzado, dependiendo si elelemento a agregar es mayor o menor.

44/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 72: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

3. Eliminar: Es la operación más complicada debido a que al eliminar un elemento

se debe garantizar el cumplimiento de la de�nición del árbol binario de

búsqueda. Para esto se deben considerar tres casos:

3.1 Si el nodo a eliminar es hoja o nodo terminal, simplemente se elimina y elapuntador a él se sustituye por un apuntador a NULL.

3.2 Si tiene solo un hijo, entonces el nodo a ser eliminado se sustituye pordicho hijo.

3.3 Si tiene dos descendientes, entonces se sustituye por el nodo que está mása la derecha de su subárbol izquierdo o por el que está más a la izquierdade su subárbol derecho.

45/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 73: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Árboles AVLNo siempre resulta útil hacer búsquedas en un árbol binario ya que estas pueden serequivalentes a una búsqueda secuencial.

(a) (b)

Figura 10: Dos posibles instancias de un árbol binario de búsqueda46/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 74: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Para evitar el caso ilustrado, surge un nuevo tipo de árbol binario

en el que ninguna rama crece más que otra para evitar con�gura-

ciones secuenciales. Este tipo de árboles son denominados árboles

balanceados o también árboles AVL (Adelson. Velskii, Landis)

47/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 75: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Para describir este tipo de árboles es necesario precisar los siguientesconceptos:

1. Altura de un nodo: Es la longitud del camino que va desde el nodo hasta la hojamás lejana de sus descendientes.

2. Longitud de camino: Es la cantidad de aristas que se deben visitar para ir desdeel nodo x hasta el nodo y.

48/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 76: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Para describir este tipo de árboles es necesario precisar los siguientesconceptos:

1. Altura de un nodo: Es la longitud del camino que va desde el nodo hasta la hojamás lejana de sus descendientes.

2. Longitud de camino: Es la cantidad de aristas que se deben visitar para ir desdeel nodo x hasta el nodo y.

48/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 77: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Dado un árbol binario de búsqueda T con nodo raiz r, su altura

denotada como H(T ) puede ser expresada como:

H(T ) =

0 T = {r}

1 +max{H(Tizq), H(Tder)} otherwise(2.1)

donde H(Tizq) y H(Tder) son las alturas de los subárboles izquierdo

y derecho.

49/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 78: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

• Se dice que el árbol está equilibrado si la altura del hijo

izquierdo y la del hijo derecho de todos los nodos di�ere

cuando mucho en 1.

• Este valor se conoce como el factor de equilibrio (FE) y los

valores deseados son -1, 0 1.

50/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 79: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

• Se dice que el árbol está equilibrado si la altura del hijo

izquierdo y la del hijo derecho de todos los nodos di�ere

cuando mucho en 1.

• Este valor se conoce como el factor de equilibrio (FE) y los

valores deseados son -1, 0 1.

50/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 80: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

En la Figura se ilustra un árbol con la altura para cada uno de los

nodos, de donde se puede determinar que para el nodo 4, FE = 2

(la diferencia de sus subárboles 3− 1).

Figura 11: Altura en un árbol binario de búsqueda

51/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 81: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

De lo anterior se deduce que el árbol no está balanceado por lo cual

se tiene que realizar un reacomodo de los nodos como el que se ilustra

en la Figura 12b. Estos reacomodos se denominan rotaciones.

(a) (b)

Figura 12: Balanceo de un árbol binario de búsqueda52/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 82: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Al insertar un nuevo nodo, existe la posibilidad de que este produzca un desequilibrioen un nodo X (FE = 2 o FE = −2). Esto plantea las siguientes situaciones:

(a) Subárbol izquierdodel hijo izquierdo deX

(b) Subárbol derechodel hijo derecho de X

53/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 83: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

(a) Subárbol derechodel hijo izquierdo de X

(b) Subárbol izquierdodel hijo derecho de X

54/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 84: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Rotación II

55/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 85: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Rotación II

56/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 86: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Rotación II

57/64 Tipos de Datos Abstractos y Estructuras Junio 2019

Page 87: Proceso de Admisión 2019 - CINVESTAV · Estructuras de Datos Estructuras de Datos Lineales Lista Enlazada Simple Estructura de datos conformada por una colección de elementos con-tiguos

Estructuras de Datos

Estructuras No-Lineales

Ejercicio: Para el siguiente árbol dibuje el árbol resultante después de eliminar el número5. Determine si el árbol es AVL, de no ser así realice las operaciones necesarias paraesta condición se cumpla.

58/64 Tipos de Datos Abstractos y Estructuras Junio 2019