Está en la página 1de 7

rimeras paginas

1/7/05

14:30

Pgina III

Estructuras de datos en C

LUIS JOYANES AGUILAR


MATILDE FERNNDEZ AZUELA
LUCAS SNCHEZ GARCA
IGNACIO ZAHONERO MARTNEZ
Departamento de Lenguajes y Sistemas Informticos e Ingeniera del Software
Facultad de Informtica, Escuela Universitaria de Informtica
Universidad Pontificia de Salamanca campus Madrid

MADRID BOGOT BUENOS AIRES CARACAS GUATEMALA LISBOA MXICO


NUEVA YORK PANAM SAN JUAN SANTIAGO S O PAULO
AUCKLAND HAMBURGO LONDRES MILN MONTREAL NUEVA DELHI PARS
SAN FRANCISCO SIDNEY SINGAPUR ST. LOUIS TOKIO TORONTO

rimeras paginas

1/7/05

14:30

Pgina IV

La informacin contenida en este libro procede de una obra original entregada por los autores. No obstante, McGrawHill/Interamericana de Espaa no garantiza la exactitud o perfeccin de la informacin publicada. Tampoco asume ningn tipo de
garanta sobre los contenidos y las opiniones vertidas en dichos textos.
Este trabajo se publica con el reconocimiento expreso de que se est proporcionando una informacin, pero no tratando de prestar
ningn tipo de servicio profesional o tcnico. Los procedimientos y la informacin que se presentan en este libro tienen slo la intencin de servir como gua general.
McGraw-Hill ha solicitado los permisos oportunos para la realizacin y el desarrollo de esta obra.

Estructura de datos en C. Serie Schaum


No est permitida la reproduccin total o parcial de este libro, ni su tratamiento informtico, ni la transmisin de ninguna forma o por
cualquier medio, ya sea electrnico, mecnico, por fotocopia, por registro u otros mtodos, sin el permiso previo y por escrito de los
titulares del Copyright.

McGraw-Hill/Interamericana
de de Espaa, S. A. U.
DERECHOS RESERVADOS 2005, respecto a la primera edicin en espaol, por
McGRAW-HILL/INTERAMERICANA DE ESPAA, S. A. U.
Edificio Valrealty, 1 planta
Basauri, 17
28023 Aravaca (Madrid)
www.mcgraw-hill.es
universidad@mcgraw-hill.com

ISBN: 84-481-4512-7
Depsito legal: M.

Editor: Carmelo Snchez Gonzlez


Compuesto en CD-FORM, S.L.
Impreso en
IMPRESO EN ESPAA - PRINTED IN SPAIN

rimeras paginas

1/7/05

14:30

Pgina V

Contenido

Prlogo .............................................................................................................................................................................

XI

Captulo 1 Algoritmos, estructura de datos y programas .........................................................................................


1.1 Resolucin de problemas de programacin .....................................................................................................
1.2 Abstraccin de datos ........................................................................................................................................
1.3 Anlisis de un problema...................................................................................................................................
1.4 Diseo de un programa ....................................................................................................................................
1.5 Implementacin (codificacin) de un programa ..............................................................................................
1.6 Verificacin ......................................................................................................................................................
1.6.1 Mtodo bsico de verificacin formal ...................................................................................................
1.6.2 descripcin formal de tipos de datos .....................................................................................................
1.6.3 el lenguaje de la lgica de primer orden................................................................................................
Problemas resueltos bsicos....................................................................................................................................
Problemas resueltos avanzados ...............................................................................................................................
Problemas propuestos..............................................................................................................................................

1
1
1
1
2
2
3
3
3
4
6
9
12

Captulo 2 Anlisis de algoritmos ................................................................................................................................


2.1 Medida de la eficiencia de un algoritmo..........................................................................................................
2.1.1 Evaluacin de la memoria......................................................................................................................
2.1.2 Evaluacin del tiempo............................................................................................................................
2.2 Notacin O-GRANDE .....................................................................................................................................
2.2.1 Descripcin de tiempos de ejecucin ....................................................................................................
2.2.2 Definicin conceptual ............................................................................................................................
2.2.3 Definicin formal...................................................................................................................................
2.2.4 Propiedades de la notacin O ................................................................................................................
2.2.5 Complejidad de las distintas sentencias y programas en C ...................................................................
2.2.6 Funciones de complejidad de algoritmos ms comnmente consideradas...................................................
2.2.7 Tabla comparativa de las distintas funciones de complejidad ms usuales ..........................................
2.2.8 Inconvenientes de la notacin O-grande................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

15
15
15
15
16
17
17
17
17
17
18
18
19
19
28
31

Captulo 3 Arrays o arreglos (listas y tablas), estructuras y uniones en C..................................................................


3.1 Array unidimensional.......................................................................................................................................
3.2 Array multidimensionales ................................................................................................................................
3.3 Array como parmetros a funciones ................................................................................................................
3.4 Estructuras ........................................................................................................................................................
3.5 Uniones.............................................................................................................................................................
3.6 Enumeraciones .................................................................................................................................................
3.7 Typedef ..........................................................................................................................................................
Problemas resueltos.................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

33
33
35
36
36
38
38
38
39
45
54

rimeras paginas

VI

1/7/05

14:30

Pgina VI

CONTENIDO

Captulo 4 Recursividad................................................................................................................................................
4.1 Algoritmos recursivos ......................................................................................................................................
4.2 Casos en los que debe evitarse el uso de la recursividad ................................................................................
4.3 Recursividad directa e indirecta.......................................................................................................................
4.4 Mtodos para la resolucin de problemas que usan recursividad ............................................................
4.4.1 Divide y vence .......................................................................................................................................
4.4.2 Backtracking (retroceso) ........................................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

57
57
58
59
60
60
60
62
64
94

Captulo 5 Algoritmos de bsqueda y ordenacin .....................................................................................................


5.1 Bsqueda ..........................................................................................................................................................
5.1.1 Bsqueda lineal ......................................................................................................................................
5.1.2 Bsqueda binaria....................................................................................................................................
5.2 Clasificacin interna.........................................................................................................................................
5.3 Ordenacin por burbuja ...................................................................................................................................
5.4 Ordenacin por seleccin.................................................................................................................................
5.5 Ordenacin por insercin .................................................................................................................................
5.7 Mtodos de ordenacin por urnas ....................................................................................................................
5.7.1 BinSort....................................................................................................................................................
5.7.2 RadixSort................................................................................................................................................
5.8 Ordenacin rpida (QuickSort) ........................................................................................................................
5.9 Ordenacin por mezcla ....................................................................................................................................
5.10 Clasificacin por montculo ...........................................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas de seguimiento ......................................................................................................................................
Algoritmos avanzados .............................................................................................................................................
Problemas propuestos..............................................................................................................................................

97
97
97
98
98
99
99
100
100
100
100
101
101
101
101
107
110
119

Captulo 6 Archivos y algoritmos de ordenacin externa .........................................................................................


6.1 Archivos en C...................................................................................................................................................
6.2 Operaciones con archivos ................................................................................................................................
6.3 Ordenacin externa ..........................................................................................................................................
6.4 Ordenacin por mezcla directa ........................................................................................................................
6.5 Ordenacin por mezcla natural ........................................................................................................................
6.6 Mtodo de la mezcla equilibrada mltiple.......................................................................................................
6.7 Mtodo polifsico.............................................................................................................................................
Problemas de seguimiento ......................................................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

121
121
121
125
127
127
127
128
129
133
139
150

Captulo 7 Tipos abstractos de datos y objetos...........................................................................................................


7.1 El papel de la abstraccin ................................................................................................................................
7.2 El tipo abstracto de datos (TAD) .....................................................................................................................
7.2.1 Especificaciones de tipos abstractos de datos........................................................................................
7.2.2 Implementacin de tipos abstractos de datos ........................................................................................
7.3 Orientacin a objetos .......................................................................................................................................
Problemas resueltos bsicos....................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

151
151
151
152
153
153
154
159
170

Captulo 8 Listas, listas enlazadas................................................................................................................................


8.1 Estructuras de datos dinmicas ........................................................................................................................

171
171

rimeras paginas

1/7/05

14:30

Pgina VII

CONTENIDO

VII

8.2 Punteros (apuntadores).....................................................................................................................................


8.3 Variables dinmicas..........................................................................................................................................
8.4 Tipos puntero predefinidos NULL y void ......................................................................................................
8.5 Conceptos generales sobre listas......................................................................................................................
8.6 Especificacin del tipo abstracto de datos lista ...............................................................................................
8.7 Operaciones sobre listas enlazadas ..................................................................................................................
8.8 Especificacin formal del tipo abstracto de datos lista ordenada ......................................................................
8.9 Insercin y borrado de un elemento en lista enlazada simple .........................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

171
172
172
173
174
174
175
175
176
183
193

Captulo 9 Modificaciones de listas enlazadas ............................................................................................................


9.1 Listas doblemente enlazadas ............................................................................................................................
9.2 Insercin y borrado de un elemento en lista doblemente enlazada .................................................................
9.3 Listas circulares simplemente enlazadas..........................................................................................................
9.4 Listas circulares doblemente enlazadas ...........................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

195
195
196
197
199
199
207
219

Captulo 10 Pilas y sus aplicaciones .............................................................................................................................


10.1 El tipo abstracto de datos pila ........................................................................................................................
10.2 Especificacin del tipo abstracto de datos pila ..............................................................................................
10.3 Implementacin mediante estructuras estticas .............................................................................................
10.4 Implementacin mediante estructuras dinmicas ..........................................................................................
10.5 Transformacin de expresiones aritmticas de notacin infija a postfija......................................................
10.6 Evaluacin de expresiones aritmticas ..........................................................................................................
10.7 Eliminacin de la recursividad.......................................................................................................................
Problemas resueltos bsicos....................................................................................................................................
Problemas resueltos avanzados ...............................................................................................................................
Problemas propuestos..............................................................................................................................................

221
221
222
222
222
223
224
224
225
229
241

Captulo 11 Colas, colas de prioridad y montculos ...................................................................................................


11.1 Colas ...............................................................................................................................................................
11.2 Especificacin formal.....................................................................................................................................
11.3 Implementacin con variables dinmicas ......................................................................................................
11.4 Colas circulares ..............................................................................................................................................
11.5 Bicolas ............................................................................................................................................................
11.6 Especificacin formal de TAD bicola sin restricciones.................................................................................
11.7 Colas de prioridad ..........................................................................................................................................
11.8 Especificacin del tipo abstracto de datos cola de prioridad .....................................................................
11.9 Montculos......................................................................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

243
243
244
245
247
247
247
248
248
249
249
265
268

Captulo 12 Tablas de dispersin y funciones hash ....................................................................................................


12.1 Tablas de dispersin .......................................................................................................................................
12.2 Funciones de transformacin de clave...........................................................................................................
12.3 Tratamiento de sinnimos ..............................................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

271
271
272
274
275
283
285

rimeras paginas

VIII

1/7/05

14:30

Pgina VIII

CONTENIDO

Captulo 13 rboles, rboles binarios y rboles ordenados ......................................................................................


13.1 Concepto de rbol ...........................................................................................................................................
13.2 rbol binario ...................................................................................................................................................
13.2.1 Construccin de un rbol binario.......................................................................................................
13.2.2 Recorridos ..........................................................................................................................................
13.3 rboles binarios de expresiones ...................................................................................................................
13.3.1 Construccin a partir de una expresin en notacin convencional ...................................................
13.4 rboles binarios de bsqueda ........................................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

287
287
288
288
288
291
292
294
295
302
316

Captulo 14 rboles binarios equilibrados..................................................................................................................


14.1. rbol binario equilibrado, rboles AVL .......................................................................................................
14.2. Insercin en rboles AVL .............................................................................................................................
14.3. Rotaciones en la insercin .............................................................................................................................
14.4. La eliminacin (o borrado en rboles AVL).................................................................................................
14.5. Rotaciones en la eliminacin ........................................................................................................................
Problemas de seguimiento ......................................................................................................................................
Problemas bsicos ...................................................................................................................................................
Problemas avanzados ..............................................................................................................................................
Problemas propuestos..............................................................................................................................................

319
319
320
321
323
324
325
333
340
343

Captulo 15 rboles B ...................................................................................................................................................


15.1 rboles B .......................................................................................................................................................
15.1.1 Bsqueda de una clave.......................................................................................................................
15.1.2 Insercin de informacin....................................................................................................................
15.1.3 Borrado fsico de un registro..............................................................................................................
15.2 Realizacin de un rbol B en memoria externa.............................................................................................
15.3 rboles B* .....................................................................................................................................................
15.4 rboles B+ .....................................................................................................................................................
Problemas de seguimiento ......................................................................................................................................
Problemas propuestos..............................................................................................................................................

345
345
346
347
348
349
350
350
352
367

Captulo 16 Grafos I: representacin y operaciones ..................................................................................................


16.1 Conceptos y definiciones ...............................................................................................................................
16.2 Representacin de los grafos..........................................................................................................................
16.3 Tipo Abstracto de Datos Grafo ......................................................................................................................
16.4 Recorrido de un grafo ....................................................................................................................................
16.5 Componentes conexas ....................................................................................................................................
16.6 Componentes fuertemente conexas................................................................................................................
Problemas resueltos bsicos....................................................................................................................................
Problemas resueltos bsicos....................................................................................................................................
Problemas propuestos..............................................................................................................................................

369
369
370
371
371
372
373
374
389
394

Captulo 17 Grafos II: Algoritmos ...............................................................................................................................


17.1 Ordenacin topolgica ...................................................................................................................................
17.2 Matriz de caminos: Algoritmo de Warshall ...................................................................................................
17.3 Problema de los caminos ms cortos con un slo origen: algoritmo de Dijkstra .........................................
17.4 Problema de los caminos ms cortos entre todos los pares de vertices: algoritmo de Floyd .......................
17.5 Concepto de flujo. Algoritmo de Ford Fulkerson..........................................................................................
17.6 Problema del arbol de expansin de coste mnimo .......................................................................................
17.7 Algoritmo de Prim y algoritmo de Kruskal ...................................................................................................
Problemas resueltos bsicos....................................................................................................................................
Problemas bsicos ...................................................................................................................................................

397
397
398
398
398
399
400
401
402
414

También podría gustarte