PDF de programación - Estructuras de datos básicas

Imágen de pdf Estructuras de datos básicas

Estructuras de datos básicasgráfica de visualizaciones

Actualizado el 28 de Julio del 2020 (Publicado el 26 de Marzo del 2018)
647 visualizaciones desde el 26 de Marzo del 2018
476,7 KB
66 paginas
Creado hace 13a (28/07/2010)
Estructuras de
datos básicas

Secuencias

Xavier Sáez Pous

PID_00146766

Material docente de la UOC

© FUOC • PID_00146766

Estructuras de datos básicas

Primera edición: septiembre 2010
© Xavier Sáez Pous
Todos los derechos reservados
© de esta edición, FUOC, 2010
Av. Tibidabo, 39-43, 08035 Barcelona
Diseño: Manel Andreu
Realización editorial: Eureca Media, SL
ISBN: 978-84-693-4239-8
Depósito legal: B-33.175-2010

Ninguna parte de esta publicación, incluido el diseño general y de la cubierta, puede ser copiada,
reproducida, almacenada o transmitido de ninguna manera ni por ningún medio, tanto eléctrico
como químico, mecánico, óptico, de grabación, de fotocopia, o por otros métodos, sin la autorización previa
por escrito de los titulares del copyright.de los titulares del copyright.

c FUOC • PID_00146766

Índice

Estructuras de datos básicas

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1. Pilas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.
Representación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Operaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.
Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.

2. Colas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.
Representación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Operaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.
2.4.
Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Representación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.
3.2. Operaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.
3.3.1.
Implementación secuencial . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2.
Implementación encadenada . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.4.

4.1.
4.2.
4.3.

4. Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas de los vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
La alternativa: punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1.
Pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2. Cola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3.
Lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Peligros de los punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
La memoria dinámica no es infinita . . . . . . . . . . . . . . . . . .
4.4.1.
El funcionamiento del TAD depende de la
4.4.2.
representación escogida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.3.
Efectos laterales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.4.
Referencias colgadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.5.
Retales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.6. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de implementación definitiva: lista encadenada . . . . .

4.4.

4.5.

5

7

9
9
10
12
14

16
16
17
18
21

23
23
24
25
25
28
33

35
35
35
37
37
39
41
43
43

44
48
49
49
51
52

c FUOC • PID_00146766

Estructuras de datos básicas

4.6. Otras variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Listas circulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Listas doblemente encadenadas . . . . . . . . . . . . . . . . . . . . . .
Listas ordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.6.1.
4.6.2.
4.6.3.

55
55
56
56

Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

Solucionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

c FUOC • PID_00146766

Introducción

5

Estructuras de datos básicas

Una secuencia es un conjunto de elementos dispuestos en un orden específi-
co. Fruto de esta ordenación, dado un elemento de la secuencia, hablaremos
del predecesor (como el elemento anterior) y del sucesor (como el elemento
siguiente).

.

Dada la secuencia <v0 v1 ... vi vi+1 ... vn>, se dice que el elemento vi+1 es
el sucesor del elemento vi y que el elemento vi es el predecesor del ele-
mento vi+1. De la misma manera, diremos que v0 es el primer elemento
de la secuencia y que vn es el último.

La mayoría de algoritmos que desarrollaremos se centrarán en la repetición
de un conjunto de acciones sobre una secuencia de datos. Ahí radica la im-
portancia de saber trabajar con las secuencias. Sin ir más lejos, en asignaturas
anteriores ya habéis estudiado los esquemas de recorrido y búsqueda en una
secuencia.

Pero además, aparte de la importancia del tratamiento de las secuencias, en es-
te módulo averiguaremos cómo se almacenan de manera que posteriormente
podamos acceder a ellas secuencialmente.

.

Un tipo de datos consta de un conjunto de valores y de una serie de
operaciones que pueden aplicarse a esos valores. Las operaciones deben
cumplir ciertas propiedades que determinarán su comportamiento.

Las operaciones necesarias para trabajar con una secuencia son:

• Crear la secuencia vacía.

Insertar un elemento dentro de la secuencia.


• Borrar un elemento de la secuencia.
• Consultar un elemento de la secuencia.

El comportamiento que se establezca para cada una de las operaciones (¿dón-
de se inserta un elemento nuevo? ¿qué elemento se borra? ¿qué elemento se
puede consultar?) definirá el tipo de datos que necesitaremos.

c FUOC • PID_00146766

.

6

Estructuras de datos básicas

Un tipo abstracto de datos (abreviadamente TAD) es un tipo de datos
al cual se ha añadido el concepto de abstracción para indicar que la
implementación del tipo es invisible para los usuarios del tipo.

Un TAD cualquiera constará de dos partes:

• Especificación. En la que se definirá completamente y sin ambigüedades

el comportamiento de las operaciones del tipo.



Implementación. En la que se decidirá una representación para los valores
del tipo y se codificarán las operaciones a partir de esta representación.
Dado un tipo, podemos hallar varias implementaciones, cada una de las
cuales deberá seguir la especificación del tipo.

De este modo, el único conocimiento necesario para usar un TAD es la especifi-
cación, ya que explica las propiedades o el comportamiento de las operaciones
del tipo.

.

Las operaciones del TAD se dividirán en constructoras (devuelven un
valor del mismo tipo) y consultoras (devuelven un valor de otro tipo).
Dentro de las operaciones constructoras, se denominarán generadoras
las que formen parte del conjunto mínimo de operaciones necesarias
para generar cualquier valor del tipo, mientras que el resto se denomi-
narán modificadoras.

En este módulo nos centraremos en los tres TAD más típicos para representar
las secuencias:

• Pilas
• Colas
• Listas

La explicación de cada tipo seguirá la misma estructura. Primero, se presentará
el tipo de una manera intuitiva para entender el concepto. A continuación, se
describirá el comportamiento de las operaciones del tipo de una manera for-
mal. Y, para acabar, se desarrollará una implementación del tipo acompañada
de algún ejemplo para ver su uso.

c FUOC • PID_00146766

Objetivos

7

Estructuras de datos básicas

Al finalizar este módulo habréis alcanzado los objetivos siguientes:

1. Conocer los TAD pila, cola y lista; y saber qué propiedades los diferencian.

2. Dado un problema, decidir cuál es el TAD más adecuado para almacenar

los datos y saberlo usar.

3. Ser capaz de implementar cualquiera de los TAD presentados en el módulo,
mediante el uso de vectores o punteros. Ser también capaz d
  • Links de descarga
http://lwp-l.com/pdf9908

Comentarios de: Estructuras de datos básicas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad