Está en la página 1de 134

ESTRUCTURA DE DATOS

INTRODUCCIÓN

ESTRUCTURA
DE DATOS

1
ESTRUCTURA DE DATOS
TEMAS

Repaso

Representación de Datos

Estructura de Datos Lineales

Estructura de Datos No Lineales

Ordenamientos
ESTRUCTURA DE DATOS
REPASO-CONVERSIONES

Conversiones
1 1 0 1 1 1 0 0 1 0 0
2048 1024 512 256 128 64 32 16 8 4 2 1 DEC

1 1 0 1 1 1 0 0 1 0 0
8 4 2 1 8 4 2 1 8 4 2 1 HEX

1 1 0 1 1 1 0 0 1 0 0
4 2 1 4 2 1 4 2 1 4 2 1 OCT

1764
1024
Ejercicios: 740
Decimal: 1764 10 512
228
Hexadecimal: 6 E 4 16 128
100
Octal: 3 3 4 48 64
36
Binario: 11011100100 2 32
4
4
0
ESTRUCTURA DE DATOS
REPASO-CONVERSIONES

Conversiones
0 1 0 1 0 0 0 0 1 1 0 1

2048 1024 512 256 128 64 32 16 8 4 2 1 DEC

0 1 0 1 0 0 0 0 1 1 0 1
8 4 2 1 8 4 2 1 8 4 2 1 HEX

0 1 0 1 0 0 0 0 1 1 0 1
4 2 1 4 2 1 4 2 1 4 2 1 OCT

1024
+ 256
Ejercicios:
Decimal: 129310 +
1280
8
Hexadecimal: 50D 16 + 1288
4
Octal: 2415 8 + 1292
1
Binario: 10100001101 2 1293
ESTRUCTURA DE DATOS
REPASO-BINARIOS

Operaciones de Binarios

Suma Resta Multiplicación

1 + 1 = 0 y se acarrea 1 1-1=0 1x1=1


1+0=1 1-0=1 1x0=0
0+1=1 0 - 1 = 1 y se toma 1 0x1=0
0+0=0 0-0=0 0x0=0
ESTRUCTURA DE DATOS
REPASO-BINARIOS

Operaciones de Binarios
Ejemplos:
Suma 1 1
1 1 1 10 1
0
1 + 1 = 0 y se acarrea 1 10 00 11 10 1
1+0=1
+ 1 11 01 11 01
0+1=1 0 1 1 1
0+0=0
1 1 1 0 0 0
ESTRUCTURA DE DATOS
REPASO-BINARIOS

Operaciones de Binarios
Ejemplos:
Resta
1-1=0 1 0 0 1 1
- 1
1-0=1 1
11 1 1 0
0 - 1 = 1 y se toma 1
0 0 1 0 1
0-0=0
ESTRUCTURA DE DATOS
REPASO-BINARIOS

Operaciones de Binarios
Ejemplos:
Multiplicación 1001
x
1x1=1
110
1x0=0 0 000
0x1=0 + 10 01
0x0=0 1001
1 1 0 110
ESTRUCTURA DE DATOS
REPASO-PASCAL

Pascal
Estructura General

Program Nombre;
Zona donde se definen las
Declaraciones; constantes, tipos, variables, etc
Begin
Zona donde se definen las
Proposiciones; instrucciones ejecutables.
End.
ESTRUCTURA DE DATOS
REPASO-PASCAL

Declaraciones
Uses
 Declaración de unidades funcionales (solo para
turbo pascal)
Label
 Declaración de etiquetas
Const
 Declaración de constantes
Types
 Declaración de nuevos tipos de datos
Var
 Declaración de variables

 Declaración de subprogramas (procedimientos y


funciones)
ESTRUCTURA DE DATOS
REPASO-PASCAL

Tipos de Datos
Básicos Estructurados
Numéricos
 Arreglos (array)
 Entero (integer)
 Registros (record)
 Real (real)
 Archivos (file of)
Alfanuméricos
 Conjuntos (set of)
 Carácter (char)
 Punteros (^)
 Cadena (string)
Lógicos
 Booleano (boolean)
ESTRUCTURA DE DATOS
REPASO-PASCAL

Instrucción PROCEDURE
Sintaxis
Procedure Nombre (Lista de parámetros);
Declaraciones;
Begin
Proposiciones;
End;

(Lista de parámetros);
( Var Parámetro : tipo; Var Parámetro : tipo; ……...)

Var – Se utiliza para indicar que un Parámetro se puede alterar.


ESTRUCTURA DE DATOS
REPASO-PASCAL
Program Estructura; Procedure Retirar;
Uses Var
CRT; nodo : enlace;
Type Begin
Enlace = ^registro; IF (primero = nil and ultimo = nil) then
Registro = record writeln (‘Cola Vacia’)
Color : string[20]; else
Begin
Liga : enlace;
writeln (primero^.color);
D end; nodo := primero;
E Var primero := primero^.liga;
Ultimo, primero : enlace; dispose (nodo);
C Ban : boolean; If primero = nil then
Opc : integer; ultimo := nil;
L end;
A Procedure LeerColor ( var nuevocolor : enlace ); end;
Begin { Programa Principal }
R Writeln (‘Dame un color ‘); P Begin
Readln ( nuevocolor^.color); ultimo := nil;
A End; R primero := nil;
C ban := true;
Procedure Agregar; O while ban do
I Var
P Begin
Dato : enlace; writeln (‘Que deseas’);
O Begin O writeln (‘1.- Agregar’);
N New (dato); writeln (‘2.- Retirar’);
Dato^.liga := nil; S writeln (‘3.- Salir’);
E Leercolor (dato);
I repeat
If ( ultimo = nil and primero = nil ) then readln (opc);
S Begin C until (opc = 1 or opc = 2 or opc = 3);
ultimo := dato; if opc = 1 then
primero := dato; I Agregar;
end
else O if opc = 2 then
Begin Retirar;
ultimo^.liga := dato; N if opc = 3 then
ultimo := dato; E ban := false;
end;
end; S end;
End.
ESTRUCTURA DE DATOS
REPASO-LENGUAJE C

Lenguaje C
Estructura de un Programa

I. Directivas del pre-procesador #include #define

II. Declaración de prototipos Declaración de Funciones

III. Declaración de variables globales Variables del programa

IV. Función principal main() Programa principal

V. Funciones definidas por el usuario Rutinas del Programa


ESTRUCTURA DE DATOS
REPASO-LENGUAJE C
Ejemplo de un programa
#include <stdio.h>
#include <math.h> I. Directivas del pre-procesador
#define VALOR 5.7
II. Declaración de prototipos
double modulo3D( double x, double y, double z );
double mod3; /* Variable global */
III. Declaración de variables globales
int main( void ){
int x, y, z;
x=y=z=VALOR;
mod3=modulo3D(x,y,z); IV. Función principal main()
printf(“\nEl módulo es: %lf”,mod3);
return(0);
}
double modulo3D( double x, double y, double z )
{ V. Funciones definidas por el usuario
return(sqrt(x*x+y*y+z*z);
}
ESTRUCTURA DE DATOS
REPASO-LENGUAJE C

Tipos de Datos
Básicos
 char (carácter)
 int (entero)
 float (punto flotante de precisión normal)
 double (punto flotante de doble precisión)

Modificadores
 short (corto)
 long (largo)
 signed (con signo)
 unsigned (sin signo)
ESTRUCTURA DE DATOS
REPASO-LENGUAJE C

Funciones Las funciones son los bloques constructores de C y


el lugar donde se da toda la actividad del programa.
Sintaxis
Tipo nombre _funcion (Lista de parámetros)
Declaraciones de parámetros;
{
Declaraciones;
Proposiciones;
return (argumento)
}

Tipo – Se refiere al tipo de dato (el nombre de la función es


una variable mas del programa)
ESTRUCTURA DE DATOS
REPASO-LENGUAJE C

P void agrega (void);


#include “stdio.h” {
R #include “stdlib.h”
void agrega(void); if ( ultimo >= (top + 21) )
O printf (“cola desbordada”)
void retirar(void);
G char color[20], *primero[20], *ultimo[20], *top[20]; else
int opc; {
R printf (“dame un color”);
void main{ scanf (“%s”, color);
A top = color; if (ultimo == top && primero == top)
M ultimo = color; {
A primero = color; F primero++;
do { U ultimo++;
P printf (“Que desea”); *ultimo = color;
R printf (“1.- Agregar”); N }
printf (“2.- Retirar”); C else {
I printf (“3.- Salir”); ultimo++;
N scanf (“%d”, &opc);
I *ultimo = color;
}
C if opc == 1 agrega; O }
if opc == 2 retirar; N }
I void retirar (void);
} while (opc==3);
P E {
} if (primero == top && ultimo == top)
A S
printf (“cola vacia”)
L else {
printf (“color %20s”, *primero);
if (primero == ultimo)
{
ultimo = top;
primero = top;
}
else
primero++;
}
}
ESTRUCTURA DE DATOS
TEMAS

Sistemas Computacionales

Representación de Datos

Estructura de Datos Lineales

Estructura de Datos No Lineales

Ordenamientos
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Componentes de un Sistema Computacional


Consiste en un conjunto de componentes electrónicos y
electromecánicos interconectados que almacenan y
transforman símbolos en base a las instrucciones
especificadas en los componentes software del mismo
sistema
Un Sistema Computacional encierra cuatro
componentes esenciales:

 Dispositivos de Entrada
 Dispositivos de Salida
 Unidad Central de Procesamiento
 Memoria Principal y Secundaria
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Estructura de un Computador
MEMORIA SECUNDARIA
(Mecánica, magnética, óptica, etc.)
(datos, instr.)
PROCESADOR
(datos, inst.) (Información)
UNIDADES UNIDAD DE CONTROL UNIDADES
de + de
ENTRADA SALIDA
U. ARITMETICO-LOGICA

señal control datos ROM/RAM datos señal control

MEMORIA PRINCIPAL

UNIDAD CENTRAL DE PROCESO


ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Dispositivo de Entrada
Son aquellos que permiten introducir la
información a la computadora. Estos
dispositivos convierten la información en
secuencias propias de bits, capaces de ser
interpretadas por el procesador.
Dispositivo de Salida
Son aquellos que envían la información del
interior de la computadora al exterior,
mostrándola al usuario, puede aparecer en
una variedad de formas; como caracteres,
como imágenes, como páginas impresas,
etc.
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Unidad Central de Procesamiento CPU


El procesador es capaz de interpretar y
ejecutar instrucciones y es el responsable de
las operaciones básicas de la computadora.
Constituye la parte operacional más
importante de todo el sistema computacional
CPU es la abreviatura de Central Process Unit
Esta compuesta por:
• Unidad Aritmética Lógica
• Unidad de Control
• Memoria Principal
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Unidad Aritmética-Lógica UAL

 Realiza las operaciones elementales, tanto aritméticas


como lógicas, que implementa el computador: suma,
resta, AND, OR, NOT, etc.
 Los datos con los que opera se leen de Memoria
Principal, y se almacenan temporalmente en los registros
que contiene la UAL
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Unidad de Control UC
 Ejecuta las instrucciones máquina almacenadas en la
Memoria Principal para ello
 Captura las instrucciones de la MP y las decodifica.
 Según el tipo de instrucción, genera las señales de
control a todas las unidades del computador para poder
realizar su ejecución
 Tiene un registro apuntador, denominado Contador de
Programa, que en cada instante contiene la dirección de la
próxima instrucción a ejecutar
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Memoria Principal
Es un área de almacenamiento interno de la computadora, de
acceso rápido, donde se almacenan las instrucciones y los datos
que la CPU necesita para ejecutar la tarea
 Se compone de un conjunto de celdas del mismo tamaño
(número de bits). Cada celda esta identificada por un número
binario único, denominado dirección
 Una vez seleccionada una celda mediante su correspondiente
dirección, se pueden hacer dos operaciones:

 Lectura. Permite conocer el valor almacenado.


 Escritura Almacena un valor nuevo
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

En las computadoras personales son utilizados dos tipos de


memorias: Memoria ROM y Memoria RAM
Memoria ROM
 Read Only Memory. El procesador puede leer la
información contenida en ellas, mas no puede
escribir datos. Esta memoria almacena programas
del fabricante.

 En la Memoria ROM residen los programas de


arranque de la máquina que le indican al
microprocesador qué hacer y cómo evaluar el
hardware existente (del que dispone).
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Memoria RAM
 Random Access Memory. Esta es una memoria
de acceso rápido donde se encuentran almacenados
temporalmente los datos e instrucciones
correspondientes a un programa dado que se
encuentra en ejecución. Al contrario de la memoria
ROM, ésta memoria permite que se realicen
operaciones de escritura y lectura.
 La RAM es una memoria volátil, su contenido se
pierde cuando la computadora se desconecta.
 La capacidad de la RAM afecta la forma en que
se ejecutan los programas y la cantidad de datos que
pueden procesarse.
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Memoria Secundaria
Es un conjunto de componentes electrónicos que almacenan
programas y datos de forma permanente. Esta memoria tiene
mayor capacidad que la memoria principal, pero es más lenta.

 El almacenamiento tiene tres ventajas sobre la memoria:

 Hay más espacio en almacenamiento que en


memoria
 El almacenamiento retiene su contenido cuando se
apaga la computadora
 El almacenamiento es más barato que la memoria
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Métodos de Acceso
Acceso Secuencial
 La información se almacena en forma de bloques o registros
organizados secuencialmente
 Para leer/escribir un registro hay que desplazarse desde la
posición actual a la deseada, pasando por todos los registros
intermedios
 El tiempo necesario para acceder a un registro es variable, en
función a su posición.
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Acceso Secuencial
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Acceso Directo
 Los bloques de información se organizan en regiones (pistas)

 Para leer/escribir un bloque se accede de forma directa a la


región especificada (pistas) y dentro de esa región se realiza
una búsqueda secuencial del bloque en cuestión (registro)
 El tiempo de acceso es rápido
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Acceso Directo
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Acceso Indezado (Random)


 Los bloques de información se almacenan mediante un índice
conocido como llave
 La forma básica del índice incluye una llave de registro y la
dirección de almacenamiento de éste.
 Para leer/escribir un bloque se accede a través del índice.

 El tiempo de acceso es variable, aunque es más rápido que el


secuencial
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES

Acceso Indexado (Random)


ESTRUCTURA DE DATOS
TEMAS

Sistemas Computacionales

Representación de Datos

Estructura de Datos Lineales

Estructura de Datos No Lineales

Ordenamientos
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Conceptos

Estructura de Datos.- Consiste en una colección de


nodos o registros que mantienen importantes
relaciones entre sí.
Nodo.- Es el elemento básico para mantener la
información en una estructura de datos.
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Para la representación de la información en un nodo se puede


usar una o más palabras de computadora, dependiendo de las
características de los datos. Un nodo puede subdividirse en
campos de tal manera que sea fácil la manipulación de la
información.

Nodo

Campo 1 Campo 2 Campo n


Boleta Nombre Edad
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Organización Física

Representación de Números Enteros


Un número entero es cualquier número que pertenece al conjunto
definido como:
Número entero = …. –(n+1), -n,……,-2,-1,0,1,2,…….(n+1)
Cualquier número entero sin signo puede ser representado por una
secuencia de dígitos de la forma:
n n-1 2 1 0
d n b + d n-1 b + ………… + d 2 b + d 1b + d0b
Donde b es la base o la raíz del sistema
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Para representar un número entero en la computadora se utiliza el


sistema de numeración binaria o de base 2; debido a la tecnología
que se utiliza para la memoria, la cual solo permite el uso de 2
dígitos 0 y 1.
Los números enteros de acuerdo a la definición pueden ser
positivos o negativos, esto hace que la representación en la
computadora se establezcan convenciones (método de signo y
magnitud o el de Complemento).
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Signo y Magnitud
Para representar un número con este método, se escribe el signo + o
– precediendo a la magnitud del número.
Para representarlo en la computadora generalmente se utiliza el
dígito binario de la extrema izquierda para definir el signo y los
restantes se utilizan para la magnitud.

No + Signo Magnitud No - Signo Magnitud

+0 0 000 -0 1 000
+1 0 001 -1 1 001
+2 0 010 -2 1 010
+3 0 011 -3 1 011
+4 0 100 -4 1 100
+5 0 101 -5 1 101
+6 0 110 -6 1 110
+7 0 111 -7 1 111
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Complemento

Para representar números enteros positivos y negativos en la


computadora se utiliza el método de complemento a la base.
n
C = b - | número |
En donde:

C .- Es la representación del número n dígitos de la base


b .- Es la base
| número | .- Es la magnitud del número negativo
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Si usamos 3 dígitos decimales; se representan 1000 números sin


signo entre 0 y 999. La idea del método consiste en asignar la
mitad de este rango para los positivos y la otra mitad para los
negativos ( -500 al 499 )
n
Representación Valor C= b - | número |
000 +0
001 +1
002 +2
: :
: :

499 499
500 - 500
501 - 499
502 - 498
: :
: :

997 -3
998 -2
999 -1
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Complemento a Dos
La representación de los números se hace con base binaria ( 0 y 1)
n
C2 = 2 - | número |
En donde:
n .- Es la cantidad de dígitos binarios para la representación
número .- Esta en base dos
Ejemplo:
5 10 = 0101 2
- 510 = 10000 2 - 0101 2 = 1011 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Otra forma de calcular el complemento a 2, se puede realizar


de la siguiente manera; cambiando los ceros por unos y los
unos por los ceros y sumando a esto la unidad.

Ejemplo:

5 10 = 0101 2
invirtiendo = 1010 2
Sumando 1 = 1011 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

No + Complemento a 2 No - Complemento a 2

+0 0000
+1 0001 -1 1 111
+2 0010 -2 1 110
+3 0011 -3 1 101
+4 0100 -4 1 100
+5 0101 -5 1 011
+6 0110 -6 1 010
+7 0111 -7 1 001
-8 1 000
La ventaja del complemento a 2 es la facilidad para realizar operaciones
aritméticas
Ejemplo:
a) 3 + 4 = 0011 2 + 0100 2 = 0111 2
b) 3 - 4 = 0011 2 + Complemento a 2 (0100) 2
0011 2 + 1100 2 = 1111 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Representación de Números Reales


Un número real en cualquier base (R) puede ser representado como:
(notación de punto fijo).
A R = +- (An A n-1 A n-2… A1 A0 . A-1 A-2…A -(m-1) A-m )R
Un método alterno que facilita la manipulación de los números
reales es la notación científica o de punto flotante.
La forma general de un número real de base (R) en notación
flotante: + …. +
- E
- . f-1 f-2 f-3 f-m x R
donde:
f-1 f-2 f-3…. f-m Es llamada la parte fraccionaria o mantisa
E Es un número entero llamado exponente
R Es la base
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Representación Gráfica
Real Precisión
Número Complejos
Doble

Signo Exponente Mantisa


Parte
Real
Mantisa

Signo Mantisa
Exponente Mantisa
Parte
Imaginaria
Mantisa
Mantisa

donde:
Signo Signo de la mantisa (representa con 0 o 1)
Exponente Exponente (representa entero en complemento a 2)
Mantisa Mantisa (representa entero en signo y magnitud)
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Representación de Caracteres
Para facilitar la escritura y lectura de los programas y datos de una
computadora, se desarrollaron códigos simbólicos para representar la
información con caracteres en lugar de números. (Código ASCII 8 bits)
Cada carácter es representado por un patrón de bits diferentes que lo
identifica, el número de bits para representar un carácter esta
determinado por el código utilizado.
En el caso de algunas máquinas con longitud de palabra de 16 bits,
existen 2 posibilidades.
0 7 8 15

1.-
Carácter
0 78 15

2.-
Carácter 1 Carácter 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Representación de Arreglos
Un arreglo es una estructura con un número fijo de nodos.
Al conjunto de nodos se le identifica con un nombre y a los nodos
con un índice

a) Dimensión A(5)

A(1)
A(2)
A(4)
A(5)
A(3)

b) Dimensión B(2,3)

B(1,1)
B(1,2)
B(1,3)
B(2,3)
B(2,1)
B(2,2)
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Almacenamiento y Recuperación
Las localidades de memoria básicamente pueden organizarse de forma
Contigua o Ligada
Organización Contigua
Los nodos del arreglo, ocupan localidades contiguas de la memoria

a) A(i=1,5) A(2)
A(1)
A(4)
A(3)
A(5)
9
10 11 12 13 14

b) B(i=1,2,j=1,3) B(1,3)
B(1,2)
B(2,1)
B(1,1)
B(2,2)
B(2,3)
9
10 11 12 13 14 15

La recuperación de cualquiera de los nodos se realiza sobre los


siguientes esquemas:
 Funciones de Mapeo de Relación 1:1
 Tablas de Recuperación
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Funciones de Mapeo de Relación 1 a 1
Es una expresión que permite calcular la dirección de un nodo en función
de sus índices
a) A(i=1,5)
DIR A(i) = BA + i
A(1) A(2) A(3) A(4) A(5) donde:
9
10 11 12 13 14 BA es una dirección
base
b) B(i=1,2,j=1,3)

DIR B(i,j) = BA + r (i-1) + j


B(1,1) B(1,2) B(1,3) B(2,1) B(2,2) B(2,3)
9 donde:
10 11 12 13 14 15 BA es una dirección base
r es el número de
columnas
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Tablas de Recuperación
Consiste en asociar al arreglo un vector que contiene las localidades de
inicio de cada renglón o columna
El vector asociado sería:
T = 9,12
B(1,1) B(1,2) B(1,3) B(2,1) B(2,2) B(2,3) DIR B(i,j) = T(i) + j
9
11 12 13 14 15 donde:
10
T es el vector asociado

Arreglo Dentado.- Es aquel que tiene un número variable de elementos en


cada renglón. El uso de una tabla de acceso, permite una aplicación sencilla
de este concepto, así como de un ahorro considerable de memoria.

B(1,1) B(1,2) B(1,3) B(1,4) B(2,1) B(2,2) B(3,1) B(3,2) B(3,3) B(4,1) B(4,2)
9
10 11 12 13 14 15 16 17 18 19 20

La tabla asociada será:


T = 9, 13, 15, 18
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Organización Ligada
En este caso, los elementos del arreglo ocupan cualquier localidad
de memoria y la relación entre ellas esta definida por el campo liga.
Para recuperar cualquier elemento del arreglo se requiere de algún
procedimiento, que puede ser iterativo o que utilice alguna función
de mapeo, esto depende de la forma de almacenamiento la cual
puede ser parcial o totalmente ligada.
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Organización parcialmente ligada
Organización Ligada
100 300 200 500

300 900 200 700 500 800 D

900 B(1,1) 700 B(1,2) 800 B(1,n)

Organización 901 B(2,1) 701 B(2,2) 801 B(2,n)


Contigua 902 B(3,1) 702 B(3,2) 802 B(3,n)
903 B(4,1) 703 B(4,2) 803 B(4,n)

B(m,1) B(m,2) B(m,n)


Algoritmo:
AB = DIR (b)
Ciclo m = 1 hasta j
AB = Liga derecha (AB)
Fin ciclo
DIR b(i,j) = Liga Izquierda (AB) + i - 1
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS

Organización totalmente ligada


8 0 0 8
B =
9 17 0 3

9 20 40 30 90

10 20 70 1 40 64 2 30 D 3 90 60 4 D

10 70 60

12 1 70 77 8 60 8 8 D

12 77 64 8

D 2 77 D 9 64 D 17 8 D 3 D
ESTRUCTURA DE DATOS
TEMAS

Sistemas Computacionales

Representación de Datos

Estructura de Datos Lineales

Estructura de Datos No Lineales

Ordenamientos
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Listas
Las listas nombre que recibe un conjunto de nodos que puede ser
aumentado o disminuido.
Una lista es una estructura de datos que tiene un número variable de nodos.
Una lista lineal, es una lista cuyos nodos están ordenados por un solo
criterio en donde el último y el primer nodo no tienen sucesor y antecesor
respectivamente.
Una lista lineal formalmente puede ser definida como un conjunto de nodos
x(1), x(2),…….,x(n) cuyas propiedades estructurales esencialmente
involucran relaciones en una sola dimensión entre ambos nodos.
Ejemplo: El nodo x(k) es predecido por el x(k-1) y le sigue el x(k+1)

…………..
X(1)
X(n)
X(2)
X(4)
X(3)
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Pilas
Una Pila o Stack es una estructura de datos lineal, en la cual las operaciones
se realizan por uno de los extremos de la lista.
UEPS Ultimas Entradas Primeras Salidas
LIFO Last Input First Output

Entrada Salida

E/S

P
I
L
A
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Ejemplo:
Entrada: 1 2 3 4 5
Salida: 12543

Paso 54
231

P
I
L
A
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Ejemplo:
Entrada: 1 2 3 4 5
Salida: 153 24

Paso 6
2
3
4
5
1

P
I
L
A
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos
Organización Contigua
Agregar Retirar

MAX Si T = MAX Si T = D
Dir i 10 escribe (‘Pila Llena’) escribe (‘Pila Vacía’)
sino sino
111
Dir i +
Si T = D Si T = MIN
Dir i +12
2 T = MIN Dato = Pila(T)
Pila(T) = dato T= D
Dir i +13
3 T
sino sino
14 T=T-1 Dato = Pila(T)

15n
Dir i + Pila(T) = dato T=T+1
MIN
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Organización Ligada
T T T NODO

Datop Liga
D
ji
Dir k

Agregar Retirar
Obtener N Si T = D
escribe (‘Pila Vacía’)
Si obtiene N
sino
Si T = D
Dato = Datop(T)
Liga(N) = D
N=T
Datop(N) = dato
T = Liga(T)
T=N
Liberar N
sino
finsi
Liga(N) = T
Datop(N) = dato
T=N
finsi
sino
escribe (‘Pila Llena’)
finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Manipulación de Expresiones Aritméticas
En la notación convencional o Notación Infija se define una jerarquía para los
operadores aritméticos (+ - * / ^) de tal forma que la operación A+B*C debe
efectuarse en el siguiente orden B*C y después + A; si lo que se desea primero es
sumar A + B para multiplicar el resultado por C, será necesario introducir a la
notación los paréntesis (A + B) * C.
En la Notación Polaca todos los operadores poseen la misma jerarquía y el orden de
evaluación esta dado por la posición de los operandos.

En la Notación Polaca Prefija el


Notación Infija Polaca Prefija Polaca Sufija operador antecede a los
operandos
A^B ^AB AB^
A*B *AB AB*
A/B /AB AB/ En la Notación Polaca Sufija los
A+B +AB AB+ operandos anteceden al
A-B -AB AB- operador
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Notación Infija Polaca Prefija Polaca Sufija

A/C+B/D +/AC/BD AC/BD/+


A*(B-C)+D/E +*A-BC/DE ABC-*DE/+

A * ( BA- C/ )C+ +D+/B


/ E/*/ D+ -/ -/A**++/(/ +C
A / +
B - CB) + D/ E
/ D

/
+

+
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Las pilas se utilizan para evaluar las operaciones aritméticas.


31.5 / ( 2 * 3.5 ) + 3 / 1.5
31.5 2 3.5 * / 3 1.5 / +

+ // 31.5
1.5 2 ) / 231.5
+ (33.5/ * 3.5 31.5 72 /
+4.5
* / 6.5

3.5
1.5
273
4.5
31.5
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Cola
Es una estructura de datos lineal en la cual las operaciones se realizan por
ambos extremos. Se agrega por uno de los extremos y se retira por el otro.
PEPS Primeras Entradas Primeras Salidas
FIFO First Input First Output

Entrada Salida

Último Primero
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos
Organización Contigua
Agregar Retirar

MAX Si U = MAX Si P = D
Dir i 10 escribe (‘Cola Llena’) escribe (‘Cola Vacía’)
U sino sino
Dir i 11
+1 Si U = D Si U = P
U = MIN Dato = Cola(P)
122
Dir i +
P = MIN U= D
13 P Cola(U) = dato P= D
sino sino
Dir i 14
+n
MIN U=U-1 Dato = Cola(P)
Cola(U) = dato P=P-1
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Organización Ligada
P U U U
NODO

Datoc Liga
D D D
ji
Dir k

Agregar Retirar
Obtener N Si P = D
Si obtiene N escribe (‘Cola Vacía’)
Liga(N) = D sino
Datoc(N) = dato Dato = Datoc(P)
Si U = D N=P
P = Liga(P)
U=N
Liberar N
P=N
sino Si P = D
Liga(U) = N U=D
finsi
U=N
finsi finsi
sino
escribe (‘Cola Llena’)
finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Cola Doble
Es una estructura de datos lineal en la cual las operaciones de agregar y
retirar se practican por ambos extremos
Una Cola Doble es una estructura en la que por la forma en que se
realizan las operaciones, puede comportarse como pila o cola.

Entrada/Salida Entrada/Salida
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos Agregar por P
Agregar por U
Organización Contigua Si U = MAX Si P = MIN
escribe (‘Cola Doble Llena’) escribe (‘Cola Doble Llena’)
sino sino
Si U = P = D Si U = P = D
U = Algún intermedio MAX y MIN U = Algún intermedio MAX y MIN
MAX P = Algún intermedio MAX y MIN P = Algún intermedio MAX y MIN
Dir i10 ColaDoble(U) = dato ColaDoble(P) = dato
U sino sino
U=U-1 P=P+1
Dir i 11
+1 Punto ColaDoble(U) = dato ColaDoble(P) = dato
intermedio finsi finsi
Dir i 12
+2 MAX-MIN finsi finsi

13 P
Retirar P
Retirar U
Dir i 14
+n Si U = D Si P = D
MIN escribe (‘ColaDoble Vacía’)
escribe (‘ColaDoble Vacía’)
sino sino
Si U = P Si U = P
Dato = ColaDoble(U) Dato = ColaDoble(P)
U= P= D U= P= D
sino sino
Dato = ColaDoble(U) Dato = ColaDoble(P)
U=U+1 P=P-1
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Organización Ligada
U P
NODO

Datoc Liga
D D
ji
Dir k

Agregar por P Agregar por U Retirar por U


Obtener N Obtener N Si U = D
Si obtiene N Si obtiene N escribe (‘Cola Doble Vacía’)
Liga(N) = D Liga(N) = D sino
Datoc(N) = dato Datoc(N) = dato Si U = P
Dato = Datoc(U)
Si P = D Si U = D
N=U
U=N U=N
Liberar N
P=N P=N
P=U=D
sino sino
sino
Liga(P) = N Liga(N) = U Dato = Datoc(U)
P=N U=N N=U
finsi finsi U = Liga(U)
sino sino Liberar N
escribe (‘ColaDoble Llena’) escribe (‘ColaDoble Llena’) finsi
finsi finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Lista Circular
Es una estructura de datos lineal que tiene como característica
fundamental un orden en el que a la última localidad de
almacenamiento le sigue la primera
Este tipo de lista viene a solucionar el problema de desplazamiento de
los nodos sobre la memoria como ocurre en el caso de la cola, o el
problema de mover los nodos a una posición después de un borrado.
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos
Organización Contigua

P
MIN
10 Agregar Retirar
Si (P=U+1) o (U=MAX y P=MIN) Si U = D y P = D
escribe (‘Lista Circular Llena’) escribe (‘Lista Circular Vacía’)
sino sino
Si U = D y P = D Si P = U
MAX U = MIN Dato = ListaCircular(P)
13 11 P = MIN U= D
ListaCircular(U) = dato P= D
sino sino
Si U = MAX Si P = MAX
U = MIN Dato = ListaCircular(P)
ListaCircular(U) = dato P = MIN
12 sino sino
U=U+1 Dato = ListaCircular(P)
ListaCircular(U) = dato P=P+1
U
finsi finsi
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Organización Ligada NODO

Datoc Liga

Dir i

Agregar Retirar
Dir k

Obtener N Si U = D
Dir j

Si obtiene N escribe (‘ListaCircular Vacía’)


Si U = D sino
Datoc(N) = dato Si U = Liga(U)
Liga(N) = N Dato = Datoc(U)
U=N N = Liga(U)
sino U=D
Dir l
Datoc(N) = dato Liberar N
Liga(N) = Liga(U) sino
Dato = Datoc(Liga(U))
Liga(U) = N
N = Liga(U)
U=N
Liga(U) = Liga(Liga(U))
finsi
Liberar N
sino
finsi
escribe (‘ListaCircular Llena’)
finsi
finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Lista Doblemente Ligada


Es una estructura de datos lineal en la cual se han incluido dos
campos de liga; uno señala al nodo sucesor llamada liga derecha
(LD) y el otro señala al nodo antecesor, llamado liga izquierda (LI).

Al incluir estos dos campos, se logra un manejo más eficiente de las


listas, como podría ser, conocer desde cualquier nodo cuál es el
nodo sucesor y cuál es el antecesor.

D X D
LI(X) LD(X)
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Representación y Algoritmos
Por la estructura de lista, es posible agregar y retirar un nodo
conociendo cualquier nodo de la lista.
LI(X) LD(X)

D X M D

N
LI(N) LD(N)

Agregar por izquierda M Agregar por derecha M


Datod(N) = Dato Datod(N) = Dato
LI(N) = LI(M) LD(N) = LD(M)
LD(N) = M LI(N) = M
LD(LI(M)) = N LI(LD(M)) = N
LD(M) = N
LI(M) = N
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES

Para tratar de solucionar el problema del algoritmo planeado de agregar un


nodo por uno de los extremos, se propone crear una lista doblemente ligada
circular incorporando un nodo especial llamado cabeza de lista.

Cabeza de Lista
En cualquier nodo N se cumple:

LD(LI(M)) = LI(LD(M)) = M

Agregar por derecha M


Datod(N) = Dato
LD(N) = LD(M)
LI(N) = M
LI(LD(M)) = N
LD(M) = N
ESTRUCTURA DE DATOS
TEMAS

Sistemas Computacionales

Representación de Datos

Estructura de Datos Lineales

Estructura de Datos No Lineales

Ordenamientos
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Gráficas o Grafos
Una gráfica G denotada como G = (A,R) es una relación de R sobre un
conjunto A. Los elementos de A, son llamados nodos, puntos ó vértices
y los elementos de R son llamados arcos o líneas.
Una relación R de un conjunto S a T es cualquier subconjunto del
producto cartesiano SxT, esto es:
R c { <s, t> | s e S y t e T
El producto cartesiano SxT de dos conjuntos, es el conjunto de pares
ordenados de tal forma que la primera coordenada de cada par es un
miembro de S y la segunda es un miembro de T, esto es:
SxT = { <s, t> | s e S y t e T
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Ejemplo:
Sea A = (1, 2) y B = (a, b, c) el producto cartesiano es:
AxB = { <1, a>, <1, b>, <1, c>, <2, a>, <2, b>, <2, c> }

Una relación R de A a B es cualquier subconjunto AxB, esto es:


R 1 = { <1, a>, <1, b> }
R 2 = { <1, a>, <2, b>, <2, c> }

De acuerdo a la definición de gráfica dada, consideremos que A es el


conjunto de los elementos (n 1 , n 2 , n 3 ,…….) el producto cartesiano AxA
es (<n 1 ,n1 >, <n1 ,n 2 >, <n 1 ,n3 >,…….. <n2 ,n 1 >, <n2 ,n2 >, <n2 ,n3 >,……...
<n 3 ,n 1 >, <n 3 ,n 2 >, <n 3 ,n 3 >,………….)
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Una gráfica G es cualquier subconjunto de AxA


Ejemplo:
Sea A = {a, b, c} y R = {<a, a>, <a, b>, <b, c>, <a, c>, <c, b>, <c, c>,
<c,a> }
Figura que representa la gráfica G = (A, R)

b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Arco Dirigido
Si en un arco e = <u, v> es importante considerar que u es el nodo inicial,
u = ini(e) o sea, el nodo de donde parte el arco y v el nodo final v = fin (e)
el nodo a donde llega el arco.
v
v
u u

Gráfica Dirigida
Una gráfica cuyos arcos son todos dirigidos.

a
b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Arco No Dirigido
Si en un arco e = <u, v> no es importante considerar cual es el nodo
inicial ni cual es el nodo final. <u, v> = <v, u>
u v v u
Gráfica No Dirigida
Una gráfica cuyos arcos son todos no dirigidos.
c
a
b

Gráfica Mixta
Cuando una gráfica contiene arcos dirigidos y no dirigidos.
c

b
a
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Lazo
Un arco que une un vértice consigo mismo, la dirección de un lazo no
tiene ningún significado y puede ser considerado como arco dirigido o no
dirigido

a
Grado Externo de un Nodo
El grado externo de un nodo u es el número de arcos que salen de él. Esto
es el número de arcos e tales que inic(e) = u
a
Grado Interno de un Nodo
El grado interno de un nodo u es el número de arcos que llegan a él. Esto
es, el número de arcos e tales que fin(e) = u

a
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Trayectoria
Si en una gráfica dirigida ciertos miembros de R pueden ser colocados en
una secuencia de la forma:
<a1 ,a 2 >, <a 2 ,a 3 >, <a 3 ,a 4 >,………………..,<a n-1 ,a n >
{<a, b>, <b, c>, <c, d>} a d
Ciclo b c
Si en una trayectoria el punto inicial a 1 es igual al punto final a n
{<a, b>, <b, c>, <c, a>}
c
a
b
Gráfica Cíclica o Acíclica
Una gráfica que contiene al menos un ciclo es llamada gráfica cíclica, de
otra forma es llamada gráfica acíclica
c c

a a b Cíclica
b acíclica
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Trayectoria Simple
Cuando los arcos de la secuencia son distintos.
{<a, b>, <b, c>, <c, d>} a d
b c
Trayectoria Hamiltoniana
Si una trayectoria es simple y se contiene a todos los nodos de A y pasa
por estos sola una vez.
A = {a, b, c, d, e} {<a, b>, <b, c>, <c, d>, <d, e>}
e
a b c d
Longitud
Es el número de arcos que componen una trayectoria
a d
1 b 2 c 3
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Peso del Arco


Cuando a un arco se le asigna un valor, este puede ser dirigido o no dirigido

a 5 5 b
b a
Gráfica Pesada
Una gráfica los arcos de la misma tienen peso.

-5 c
3

a 4
10 b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Arco Paralelo
Cuando un par de nodos esta unido por más de un arco en el mismo sentido.

a b

Multigráfica
Es cuando una gráfica contiene arcos paralelos.

b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Ejemplo: d
c
a

b e

Trayectoria a a d:
Trayectoria Simple:
Trayectoria Hamiltoniana:
Ciclo:
Nodo GRADO INTERNO GRADO EXTERNO TRAYECTORIA LONGITUD

E
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Representación de Gráficas en la Computadora


Una gráfica G = (A,R) dirigida con A = { a 1 ,a 2 ,a 3 ,……,a n } puede ser
completamente especificada con una matriz de orden n, llamada matriz de
adyacencia.
Para definir la matriz debe considerarse que cualquier elemento Xij de la
matriz es igual a 1, si el arco <ai ,aj > existe en R; Xij es igual a 0 si el
arco no existe.

b
a b c
a a 1 1 1
b 0 0 0
c 0 1 0
c
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

En una gráfica dirigida y pesada el elemento Xij de la matriz de


adyacencia es igual al peso del arco, si el arco existe en la gráfica y Xij es
igual a cero, si el arco no existe.
3 b a b c
a a 4 3 0
2
4 b 0 0 0
1 c c 1 2 0

Una gráfica no dirigida, pesada o no, queda representada por una matriz
triangular, ya que los arcos <a i ,a j > y <aj ,a i > quedan representados en
un solo elemento Xij de la matriz de adyacencia.

3 b a b c
a a 4 3 1
2
b 0 0 2
4 c
1 c 0 0 0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Otras alternativas para representar gráficas en la computadora son la


utilización de listas ligadas. Un posible formato es la utilización de una
lista ligada con la cabeza de lista para cada uno de los nodos de la gráfica.
b a a b c D
a
b a c D

c c a b D
En una gráfica dirigida sólo estarán en la lista de cualquier nodo aquellos
nodos adyacentes a los que se tiene acceso desde él. Si la gráfica también
es pesada, será necesario agregar un campo adicional al nodo para guardar
el peso del arco.
3 b a a 4 b 3 c 1 D
a
4 2 b D
1
c c b 2 D
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Árboles
Conceptos y Definiciones
Un árbol es una gráfica G =(A,R) en la que:
1.- El número de nodos es igual al número de arcos mas uno | A | = | R | + 1
2.- Todos los nodos son de grado interno 1, excepto un nodo llamado la raíz que es de
grado 0.
3.- No hay ciclos
4.- Cualquier trayectoria es simple
5.- Entre cualquier par de nodos solo hay una trayectoria
6.- Cualquier arco, es un arco de desconexión

Otra forma de uso frecuente para definir un árbol es la siguiente definición recursiva:

“Un árbol es un conjunto de uno o más nodos en el que hay un nodo especial,
llamado la raíz del árbol y los demás nodos son particiones en subconjuntos
disjuntos T1 ,T 2 ,T 3 ,……,T n (n >= 0), cada uno de los cuales es un árbol. Cada
Ti ( 1 =< i =< n ) es llamado un subárbol de la raíz”.
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo:
Consideremos la siguiente gráfica G = (A, R) donde:
A = {a, b, c, d, e y f}
R = {<a, b>, <a, c>, <a, d>, <c, e>, <c, f>}

b e
a Por lo tanto la gráfica G es un árbol
c
d f
Verificamos si la gráfica es un árbol.
1.- El número de nodos es igual al número de arcos mas uno 6=5+1
2.- Todos los nodos son de grado interno 1, excepto un nodo llamado la raíz que es de
grado 0. a = 0, b = 1, c = 1, d = 1, e = 1, f = 1
3.- No hay ciclos OK
4.- Cualquier trayectoria es simple <a,c> <c,e>; <a,c> <c,f>; <a,b>; <a,d> OK
5.- Entre cualquier par de nodos solo hay una trayectoria OK
6.- Cualquier arco, es un arco de desconexión OK
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

b e
a
c
f
d
Verificamos si la gráfica es un árbol, mediante el algoritmo recursivo.
“Un árbol es un conjunto de uno o más nodos en el que hay un nodo especial,
llamado la raíz del árbol y los demás nodos son particiones en subconjuntos
disjuntos T1 ,T 2 ,T 3 ,……,T n (n >= 0), cada uno de los cuales es un árbol. Cada
Ti ( 1 =< i =< n ) es llamado un subárbol de la raíz”.

1.- Si llamados al nodo (a) la raíz del árbol y


2.- los nodos restantes los particionamos en T1 = {b}, T2 = {c, e, f} y T 3 = {d}.
T1
b
Raíz
a e
T2
árbol c f

d T3
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

e
c
f

3.- La partición T2 es un subárbol, por lo tanto se aplica nuevamente el algoritmo


recursivo a esta partición. Si llamamos en esta partición al nodo (c) como la raíz
del árbol, y
4.- los nodos restantes los particionamos en T4 = { e } y T5 = { f }, las particiones
resultantes son todas árboles.

c e T4
Raíz
Por lo tanto la gráfica G es un árbol
árbol
f T5
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Terminología de Árboles
Grado o grado externo.- de un nodo al número de sus
a
subárboles a=3 b=0 c=2 d=0
e=0 f=0
Hoja o Nodo Terminal .- Es un nodo de grado cero
b c d b, d, e y f
Nodo Ramal .- Es un nodo de grado mayor a cero
a y c
e
Nivel de un nodo .- Es el nivel de su antecesor directo más
uno. El nivel de la raíz es 1.
f a=1 b=2 c=2 d=2 e=3 f=3
También es frecuente que los nodos de un árbol reciban
a a tales como: el nodo a es padre de b, c y d o que
nombres,
b c
c b, c y db son hijos de a, o que b, c y dd son hermanos.
e
e
f
d f
( a ( b, c ( e, f ), d ) )
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Árboles Ordenados.- Cuando el orden de los subárboles es importante


Árboles Orientado.- Cuando no se considera un orden para los subárboles
Árboles Libres.- Cuando la dirección de los arcos se ignora

a a d

c b c
b c

d e f e d f e f a

A B C
b
Si los árboles son ordenados A = B = C
Si los árboles son orientados A= B = C
Si los árboles son libres A= B = C
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Representación de Árboles en la Computadora


Un árbol puede ser completamente especificado por una matriz de
adyacencia de forma similar a una gráfica dirigida. Para especificar el
nodo raíz, es posible utilizar los elementos de la diagonal principal que
siempre estarán disponibles.

a
a b c d e f
a 1 1 1 0 0
c b 0 0 0 0 0
b d
c 0 0 0 1 1
d 0 0 0 0 0
e f e 0 0 0 0 0
f 0 0 0 0 0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Cuando el árbol es libre, la matriz de adyacencia es triangular y se especifica de
forma similar a una gráfica no dirigida.
a a b c d e f
a 1 1 1 0 0
b 0 0 0 0 0
b c d c 0 0 0 1 1
d 0 0 0 0 0
e f e 0 0 0 0 0
f 0 0 0 0 0

Otra alternativa es la utilización de un arreglo unidimensional en el que, cada


elemento representa a cada uno de los nodos del árbol y su contenido a su
antecesor directo.
a
a b c d e f
b c d a a a c c

e f
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Árboles Binarios
Un Árbol Binario es un árbol en el que cualquier nodo tiene cero, uno o
dos subárboles; cuando tiene exactamente cero o dos subárboles es
llamada árbol estrictamente binario, de otra forma es un árbol de knuth.

2 a a
1
c 1
b 0 2 b
d c
e 2
2 0
f d e
0 g 0 0
0
Árbol Estrictamente Binario Árbol de Knuth
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Árboles Balanceado AVL


Es un árbol binario en el cual las alturas de los dos subárboles de todo
difiere a lo sumo en 1. El balance de un nodo en un árbol binario se define
como la altura de su subárbol izquierdo menos la altura de su subárbol
derecho. Cada nodo en un árbol balanceado tiene balance igual a 1, -1 o 0.
FE = [H RD - HRI ] =< 1
Donde:
H RI Es la altura de la rama o subárbol izquierdo
H RD Es la altura de la rama o subárbol derecho
a FE a = 2 - 2 a FE a = 2 - 3
0 -1
FE b = 2 - 1 c
FE b = 1 - 1 c 1 -1
b 0 0 FE c = 1 - 1 b FE c = 0 - 1
FE f = 0 - 0 d
d f 0 FE = 0 - 0
0 e g 0 e d
0 f 0 -1
FE d = 0 - 0 0 FE = 0 - 0 g FE e = 0 - 1
FEÁrbol
= 0 -FE
0 f = 0FE
- 0g = 0 -g0
e Completo 0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Reestructuración de un árbol balanceado


Reestructurar un árbol significa rotar los nodos del mismo para llevarlo a
un estado de equilibrio. La rotación puede ser simple o compuesta. El
primer caso involucra dos nodos y el segundo caso afecta a tres.

DD Ramas Derechas
Simple
II Ramas Izquierdas
Rotación
DI Ramas Derecha e Izquierda
Complejo
ID Ramas Izquierda a Derecha
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Rotación II X -2
-1
C
0
B
B 0 -1
X

A C
A
0 0 0

Rotación DD 0
A
X1 2 B

B
0 1
X
A C
0 0
C
0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Rotación ID X -2
-1
C
0
B
A 0 1
X

A C
B 0 0 0

Rotación DI 0
X1 2 B
A

C
0 -1
X
A C
0 0
0
B
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Ejercicio 65, 50, 23, 70, 82, 68, 39, 10


65 50 23 70 82 68 39 10

-10
-2 -1012
65
50
65

0 -1
-1
-2 0 -1 0
0
12
39
50 50
23 65
70 70

-10 0 0
0 0
0
1 70 0 01
23 2301
23 50 65 68 82 82

0 0
0 0
10 39 68 82
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Árboles B
Al considerar un orden para los subárboles inclusive cuando sólo existe
uno de ellos, el árbol es B. Un árbol B tiene asociado en los arcos un peso
cuyo valor es cero, cuando el arco esta orientado a la izquierda y uno
cuando esta a la derecha.
Dos arcos que se originan en el mismo nodo no pueden tener la misma
orientación.
a a a
0 1 c
0 1
c b 1 c 0
b b
0 1
1
d d
e 0
e
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Transformación de árboles a árboles binarios.


Un árbol de grado mayor a 2 puede ser transformado a su árbol
estrictamente binario o de knuth correspondiente.
Un bosque es un conjunto de árboles disjuntos y puede ser
transformado a un árbol de Knuth con el uso del siguiente
algoritmo:
1.- Ligar las raíces de los árboles del bosque y seleccionar a la raíz
del árbol a la izquierda como la raíz del nuevo árbol.
2.- Ligar a todos los hermanos de cada padre
3.- Retirar todas las ligas de un padre a sus hijos excepto la del hijo
a la izquierda.
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo:
Paso 2 Ligar alas
13 Retirar todos
todas losde
raíces
las hermanos
ligas unde
losdeárbolescada
padre padre
delabosque
sus hijos
y seleccionar
excepto la del
a lahijo
raíza
delizquierda.
la árbol a la izquierda como la raíz del nuevo árbol.
Raíz nuevo árbol
a 1 P

c d 3 4 S
R
b 2 Q

e f 5 T U V
6
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Raíz nuevo árbol


a

1
b
c P
e 2
d 3 Q
f
R
5 4
S

6
T

V
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Transformación un árbol a un árbol estrictamente binario.

Para transformar un árbol a un árbol estrictamente binario, deberán


considerarse los pasos algoritmo siguiente:
1.- Se selecciona la raíz del árbol original, se genera un nuevo nodo
cuyo hijo izquierdo es el subárbol izquierdo de la raíz, y el derecho
lo que queda del árbol original incluyendo la raíz.
2.- Este proceso se repite recursivamente sobre los subárboles del
nuevo árbol, hasta que los nodos de los subárboles sean
transformados a nodos terminales
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo:
Paso 21 Este
Se selecciona
proceso se
la raíz
repite
delrecursivamente
árbol original, se
sobre
genera
los un
subárboles
nuevo nododel
nuevo
cuyo hijo
árbol,
izquierdo
hastaes que
el subárbol
los nodos
izquierdo
de de
losla raíz,
subárboles
y el derecho
sean
transformados
lo que queda del
a nodos
árbol original
terminales
incluyendo la raíz.

Raíz del Árbol Original

aaaa N1
N2 N3 N1
2

ccc dddd c a
bd aN2 a
bb b 2
0
c dN3 d
c ac
0 2
d
d a
0 0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Recorrido de Árbol.
Recorrer un árbol, es un método de visitas de los nodos con el objeto de
sistematizar la recuperación de la información almacenada en los nodos de un
árbol.
Una de las formas mas sencillas de recorrer un árbol de arriba hacia abajo (top-
down); es iniciar las visitas por la raíz y continuar sobre los nodos del nivel 2 de
izquierda a derecha, continuar con los del nivel 3, hasta alcanzar el nivel n.
Cuando procedemos desde el nivel n hacia la raíz, el recorrido es de abajo hacia
arriba (bottom-up).
a

Arriba Abajo
Hacia
c Hacia
Abajo
b Arriba

d e f g
Top-Down abcdef g
Bottom-Up def gbca
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Los recorridos también pueden practicarse sistematizando la visita de los


subárboles.
Recorrido Preorder
• Se visita el nodo
a
• Se recorre el subárbol izquierdo
• Se recorre el subárbol derecho
c
b Recorrido Inorder
• Se recorre el subárbol izquierdo
f • Se visita el nodo
d e • Se recorre el subárbol derecho
g h Recorrido Postorder
• Se recorre el subárbol izquierdo
• Se recorre el subárbol derecho
• Se visita el nodo
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Ejemplo: Recorrido en Preorder

a Preorder
2
1
3

132
c • Se visita el nodo
b 12
3
• Se recorre el subárbol izquierdo
13
2
31
2 f
2 • Se recorre el subárbol derecho
d e 31

g h
12
3 2
13

Preorder a b d e c f gh
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Ejemplo: Recorrido en Inorder

a Inorder
2
1
3

132
c • Se recorre el subárbol izquierdo
b 12
3
• Se visita el nodo
13
2
31
2 f • Se recorre el subárbol derecho
2
d e 31

g h
12
3 2
13

Inorder d b ea cg f h
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Ejemplo: Recorrido en Postorder

a Postorder
2
1
3

132
c • Se recorre el subárbol izquierdo
b 12
3
• Se recorre el subárbol derecho
13
2
31
2 f • Se visita el nodo
2
d e 31

g h
12
3 2
13

Postorder d ebgh fca


ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES

Ejercicio Job, Flor, Iván, Luis, Ana, Sara, Alba, Luz, Juan
Job Flor Iván Luis Ana Sara Alba Luz Juan

Job

Flor Luis

Iván Juan Sara


Ana

Alba Luz
Recorrido TopDown
Preorder
Inorder
Postorder
Bottom Up
• Arriba
Nodo aa Arriba
Subárbol
Abajo izquierdo
Abajo
TopDown Job Flor Luis Ana Iván Juan Sara Alba Luz • Izquierda-Derecha
Nodo
Subárbol izquierdo
derecho
Bottom Up Alba Luz Ana Iván Juan Sara Flor Luis Job • Nodo
Subárbol derecho
Preorder Job Flor Ana Alba Iván Luis Juan Sara Luz
Inorder Alba Ana Flor Iván Job Juan Luis Luz Sara
Postorder Alba Ana Iván Flor Juan Luz Sara Luis Job
ESTRUCTURA DE DATOS
TEMAS

Sistemas Computacionales

Representación de Datos

Estructura de Datos Lineales

Estructura de Datos No Lineales

Ordenamientos
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Ordenamientos.
El ordenamiento es una de las operaciones más importantes que se
práctica sobre una estructura de datos.
Ordenar una estructura de datos es establecer un orden de precedencia
entre los elementos de la estructura de acuerdo a uno o más campos llaves
que se seleccionen para tal fin.
Consideraciones para la Selección del Método
1.- El tipo de memoria en la que se encuentran los datos. Esta puede ser
de acceso directo y de alta velocidad, acceso directo y mediana velocidad
o de acceso secuencial
2.- Las características del SO para el manejo de archivos y memoria
3.- Los tiempos de acceso a los dispositivos
4.- La cantidad, el tipo y la distribución inicial de los datos
5.- La eficiencia del método n Log 2 n n = no. elementos a ordenar
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Ordenamientos Internos
Los métodos de ordenamiento que se utilizan para un conjunto de datos
almacenados en una memoria de acceso directo de alta velocidad, son
llamados métodos de ordenamiento interno.

De acuerdo al principio en se que basa el ordenamiento se clasifica en:


• Método por Selección
• Método por Intercambio
• Método por Inserción
• Método por Distribución
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Método por Selección


Los métodos de selección, como su nombre lo indica, seleccionan del
conjunto de datos, según el criterio que se siga, al mayor y al menor de los
datos del conjunto y lo excluye para proceder sobre los restantes de forma
similar.
Selección Directa
Este método de ordenamiento consiste en seleccionar del conjunto de
datos, el elementos más pequeño en valor y excluirlo del conjunto de
datos para repetir el procedimiento sobre los datos restantes.
El algoritmo que realiza esta operación supone que los datos están
almacenados en un arreglo de una dimensión, intercambia en la primera
pasada al dato menor con el que está en la posición uno del arreglo; en la
siguiente, el dato siguiente menor con el que esta en la posición dos, etc.
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Ejemplo:
10, 12, 7, 1, 6, 9 Algoritmo
Ciclo I = 1 hasta N-1
Inicio 1 2 3 4 5 k=i
Ciclo j = i + 1 hasta N
i Si A(j) < a(k)
k=j
i Fin si
Fin ciclo
ik Si i <> k
c = A(i)
k i A(i) = A(k)
A(k) = c
Fin si
k i
Fin ciclo
k k
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Método por Intercambio


Los métodos por intercambio trasponen o intercambian sistemáticamente
pares de datos que se encuentran fuera de orden hasta que dejen de existir.
Los métodos representativos de este grupo son:
 Método de Burbuja
 Método de Transposición de Pares y Nones
Burbuja
El nombre de burbuja se debe a la manera como los datos se mueven
dentro del conjunto, aparentando ser burbujas en el agua subiendo a la
superficie.
El algoritmo se inicia comparando las llaves n y n-1 y las intercambia si n
< n-1, compara después n-1 y n-2 y las intercambia si n-1 < n-2. Este
procedimiento se práctica hasta comparar los datos 1 y 2 y cuando esto
sucede, el menor dato ha alcanzado su posición inicial.
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Ejemplo:
10, 12, 8, 1, 6, 9
Algoritmo
Inicio 1 2 3 4 5
Ciclo I = 1 hasta N-1
i Ciclo J = I + 1 hasta N
Si A(i) > a(j)
j i aux = A(i)
A(i) = A(j)
j j i A(j) = aux
Fin si
j j j i Fin ciclo
Fin ciclo
j j j j i

j j j j j
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Trasposición de Pares y Nones


El algoritmo consiste en dos etapas. En la primera, se comparan los datos
nones con su sucesor y se les intercambia si es necesario. En la segunda se
comparan los datos pares con su sucesor y se les intercambia si es necesario, el
proceso se práctica hasta que en ambas pasadas no se encuentre un
intercambio.
Inicio N1 P1 N2 P2 N3 P3 N4 P4

2
> > > >
3
> > > >
4
> > > >
5
> > > >
6
> > > >
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Método por Inserción


Los algoritmos de inserción suponen que el conjunto de llaves se
encuentra ordenado. Para una llave k que se desea agregar al conjunto, se
determina el lugar que debe ocupar y se mueven los datos una posición
para insertarlo en su posición correcta,

Inserción Directa
El algoritmo considera que el conjunto ordenado sólo tiene un elemento y
a partir de este se irán insertando los demás.
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Ejemplo:
Algoritmo
8, 5, 3, 7, 10, 15, 2, 13
N=0
Mientras existe dato haz
Leer num
ban = true
I=1
Mientras I <= 1 Haz
Si num < t(i)
Ciclo j = N hasta I, -1
t(j+1) = t(j)
Fin ciclo
t(i) = num
ban = false
i=N
Fin si
i=i+1
Fin mientras
N=N+1
Si ban = true
t(n) = num
Fin si
Fin mientras
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Método por Distribución


Los métodos de distribución son análogos al proceso de ordenamiento que
emplea un clasificador de tarjetas, método que consiste en una colección
de casilleros, donde se depositan las tarjetas que coinciden con la marca
del casillero.

Cubetas
El algoritmo de bucket sort es de los más representativos entre los
métodos de distribución y se basa en el manejo de dos fases; la primera
para distribuir los datos en las cubetas y la segunda en la recolección de
los datos.
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Ejemplo: 135, 209, 107, 106, 124, 221, 103, 218, 203, 278, 74, 104
74
103
221
135 103
203
209 104
203
107 106
124 107
74
124 124
209
104
221 218
135
103 203
106
221
218 124
209
107
203 218
135
278 221
278
74 278
209
104

Distribución Centenas
Decenas
Unidades

Cub 0 Cub 1 Cub 2 Cub 3 Cub 4 Cub 5 Cub 6 Cub 7 Cub 8 Cub 9

103
74 221
218
103 221
203 135
103 124 135 106 107
74 218 209

203 104 124


209 203 74 278 278

104 106 218 104

106 107 221

107 124 278

209 135
ESTRUCTURA DE DATOS
ORDENAMIENTOS

Ordenamientos Externos

En la actualidad es muy común procesar volúmenes de información


que los datos no se pueden almacenar en la memoria principal de la
computadora. Estos datos organizados en archivos, se guardan en
dispositivos de almacenamiento secundario, como cintas, discos,
etc.
El proceso de ordenar los datos almacenados en varios archivos se
conoce como fusión o mezcla; se entiende por este concepto a la
combinación o intercalación de dos o más secuencias ordenadas en
una única secuencia ordenada.
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Ejemplo:

Tabla A

Tabla B

Elemento A Elemento B

Tabla C
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo:
Paso 21 Este
Se selecciona
proceso se
la raíz
repite
delrecursivamente
árbol original, se
sobre
genera
los un
subárboles
nuevo nododel
nuevo
cuyo hijo
árbol,
izquierdo
hastaes que
el subárbol
los nodos
izquierdo
de de
losla raíz,
subárboles
y el derecho
sean
transformados
lo que queda del
a nodos
árbol original
terminales
incluyendo la raíz.

Raíz del Árbol Original

aaaa N1
N2 N3 N1
2

ccc dddd c a
bd aN2 a
bb b 2
0
c dN3 d
c ac
0 2
d
d a
0 0

También podría gustarte