Table Of ContentEl objetivo de este libro es mostrar las principales estructuras de datos con G
U
base en el paradigma orientado a objetos. Se presenta cada una de las princi-
A
pales estructuras y la manera en la que se almacena y recupera la información. R
El texto explica la lógica requerida para llevar a cabo las operaciones más D
A
importantes y muestra la implementación de estos algoritmos. Para la progra-
T
mación de algoritmos y ejemplos se utiliza el lenguaje de programación C++, I
uno de los lenguajes orientados a objetos más conocidos y utilizados, tanto en
el ámbito académico como a nivel profesional.
El libro está orientado a todos aquellos que:
• Quieran conocer y entender los principios de la programación orientada
a objetos.
• Necesiten saber cómo funcionan las estructuras de datos.
• Deseen conocer y dominar la implementación de los principales algo-
ritmos dedicados al manejo de las estructuras de datos.
• Les interese aprender a usar las estructuras de datos en la solución de
problemas y en la implementación de estas soluciones.
En cada uno de los capítulos se explican los principales conceptos y se
refuerzan con ejemplos que ayudan a su comprensión. Además, se incluyen
programas, o las instrucciones requeridas, para mostrar la implementación de
los algoritmos y las soluciones a los problemas de aplicación de las estructuras
estudiadas.
Para mayor información sobre este tema visite:
www.pearsoneducacion.net/guardati
Visítenos en: Silvia Guardati
www.pearsoneducacion.net
ESTRUCTURA DE DATOS
ORIENTADA A OBJETOS
Algoritmos con C++
ESTRUCTURA DE DATOS
ORIENTADA A OBJETOS
Algoritmos con C++
Silvia Guardati Buemo
Instituto Tecnológico Autónomo de México
REVISIÓN TÉCNICA:
Fabiola Ocampo Botello
Escuela Superior de Cómputo
Instituto Politécnico Nacional
José Luis García Cerpas
Centro de Enseñanza Técnica Industrial, Jalisco
Datos de catalogación bibliográfica
GUARDATI BUEMO, SILVIA
Estructura de datos orientada a objetos:
Algoritmos con C++
(cid:2)(cid:2)(cid:2)(cid:2)(cid:2)(cid:2)(cid:2)(cid:2)(cid:2) PEARSON EDUCACIÓN,
México, 2007
ISBN: 978-970-26-0792-2
Área: Computación
Formato: 18.5 × 23.5 cm Páginas: 584
Editor:Luis Miguel Cruz Castillo
e-mail:luis.cruz@pearsoned.com
Editor de desarrollo:Bernardino Gutiérrez Hernández
Supervisor de producción:Rodrigo Romero Villalobos
PRIMERA EDICIÓN, 2007
D.R. ©2007 por Pearson Educación de México,S.A. de C.V.
Atlacomulco 500-5 piso
Industrial Atoto
53519,Naucalpan de Juárez,Edo. de México
Cámara Nacional de la Industria Editorial Mexicana. Reg. Núm. 1031
Prentice Hall es una marca registrada de Pearson Educación de México,S.A. de C.V.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicación pueden reproducirse,registrarse o transmi-
tirse,por un sistema de recuperación de información,en ninguna forma ni por ningún medio,sea electrónico,mecá-
nico,fotoquímico,magnético o electroóptico,por fotocopia,grabación o cualquier otro,sin permiso previo por escrito
del editor.
El préstamo,alquiler o cualquier otra forma de cesión de uso de este ejemplar requerirá también la autorización del
editor o de sus representantes.
ISBN 10:970-26-0792-2
ISBN 13:978-970-26-0792-2
Impreso en México. Printed in Mexico.
1 2 3 4 5 6 7 8 9 0 - 10 09 08 07
C
ONTENIDO
Introducción xi
Agradecimientos xv
Capítulo 1 Introducción a la Programación Orientada a Objetos 1
1.1 Características de la POO ....................................................................2
1.2 Ventajas de la POO ............................................................................3
1.3 Tipos abstractos de datos ....................................................................4
1.4 Clases ..................................................................................................7
1.4.1 Clases abstractas y concretas ......................................................9
1.4.2 Definición de una clase en C++ ................................................10
1.4.3 Los métodos constructor y destructor ......................................17
1.4.4 Uso de constructores múltiples ..................................................18
Ejercicios ................................................................................................26
Capítulo 2 Herencia y amistad 35
2.1 Herencia simple ................................................................................36
2.2 Herencia múltiple ..............................................................................40
2.3 Herencia de niveles múltiples ..........................................................45
2.4 Herencia privada ................................................................................58
2.5 Clases amigas (friend) ....................................................................59
2.6 Métodos amigos ................................................................................63
2.7 Funciones amigas ..............................................................................65
Ejercicios ................................................................................................67
vi Contenido
Capítulo 3 Sobrecarga, plantillas y polimorfismo 77
3.1 Sobrecarga ........................................................................................77
3.1.1 Sobrecarga de operadores ..........................................................78
3.1.2 Sobrecarga de funciones o métodos ..........................................82
3.2 Plantillas ............................................................................................87
3.2.1 Plantillas de funciones ..............................................................87
3.2.2 Plantillas de clases ....................................................................89
3.3 Polimorfismo ....................................................................................99
3.3.1 Funciones virtuales ....................................................................99
3.3.2 Clases abstractas ......................................................................107
Ejercicios ..............................................................................................111
Capítulo 4 Arreglos 115
4.1 Introducción ....................................................................................115
4.2 La clase Arreglo ..............................................................................117
4.3 Métodos de acceso y modificación a arreglos ..............................119
4.3.1 Lectura de arreglos ..................................................................119
4.3.2 Escritura de arreglos ................................................................121
4.3.3 Eliminación en arreglos ..........................................................122
4.3.4 Operaciones en arreglos desordenados ....................................123
4.3.5 Operaciones en arreglos ordenados ........................................131
4.4 Arreglos paralelos ............................................................................140
4.5 Arreglos de dos dimensiones ..........................................................149
4.6 Arreglos de objetos ..........................................................................160
4.7 Casos especiales de arreglos ..........................................................171
4.7.1 Matrices poco densas ..............................................................171
4.7.2 Matrices triangulares ..............................................................177
Ejercicios ..............................................................................................183
Capítulo 5 Pilas y colas 195
5.1 Introducción ....................................................................................195
5.2 Pilas ................................................................................................196
5.3 Colas ................................................................................................211
5.3.1 Colas circulares ........................................................................224
5.3.2 Colas dobles ............................................................................231
Ejercicios ..............................................................................................232
Capítulo 6 Listas 237
6.1 Introducción ....................................................................................237
6.2 Listas simplemente ligadas ..............................................................238
Contenido vii
6.2.1 Inserción de elementos en una lista ........................................241
6.2.2 Eliminación de elementos de una lista ..................................247
6.2.3 Implementación de pilas por medio de listas ..........................264
6.3 Listas circulares simplemente ligadas ............................................268
6.4 Listas doblemente ligadas ..............................................................269
6.4.1 Inserción en listas doblemente ligadas ....................................272
6.4.2 Eliminación en listas doblemente ligadas ..............................276
6.4.3 Búsqueda de elementos en
listas doblemente ligadas ................................................................281
6.5 Listas circulares doblemente ligadas ..............................................293
6.6 Multilistas ........................................................................................293
Ejercicios ..............................................................................................304
Capítulo 7 Árboles 313
7.1 Introducción ....................................................................................313
7.2 Árboles binarios ............................................................................315
7.2.1 Operaciones en árboles binarios ..............................................319
7.2.2 Árboles binarios de búsqueda ..................................................329
7.3 Árboles balanceados ......................................................................345
7.4 Árboles-B ......................................................................................367
7.5 Árboles-B+ ......................................................................................381
Ejercicios ..............................................................................................388
Capítulo 8 Gráficas 393
8.1 Introducción ....................................................................................393
8.2 Gráficas dirigidas ............................................................................397
8.2.1 Representación de una digráfica ..............................................397
8.2.2 La clase digráfica......................................................................400
8.2.3 Recorrido de gráficas dirigidas ................................................402
8.2.4 Aplicación de gráficas dirigidas ..............................................417
8.3 Gráficas no dirigidas........................................................................421
8.3.1 Representación de una gráfica..................................................422
8.3.2 La clase gráficano dirigida....................................................423
8.3.3 Recorrido de gráficas no dirigidas............................................424
8.3.4 Aplicación de gráficas no dirigidas..........................................432
8.4 Búsqueda..........................................................................................436
8.4.1 Búsqueda en profundidad (Depth First)................................436
8.4.2 Búsqueda a lo ancho (Breadth First)....................................441
Ejercicios................................................................................................446
viii Contenido
Capítulo 9 Ordenación 449
9.1 Introducción......................................................................................449
9.2 Ordenación interna ..........................................................................450
9.2.1 Métodos de ordenación por intercambio..................................452
9.2.2 Método de ordenación por selección........................................466
9.2.3 Método de ordenación por inserción........................................469
9.3 Ordenación externa ..........................................................................488
9.3.1 Mezcla directa..........................................................................489
9.3.2 Mezcla equilibrada....................................................................494
Ejercicios................................................................................................500
Capítulo 10 Búsqueda 505
10.1 Introducción....................................................................................505
10.2 Búsqueda interna............................................................................506
10.2.1 Búsqueda secuencial ..............................................................508
10.2.2 Búsqueda binaria....................................................................516
10.2.3 Búsqueda por transformación de claves (Hash) ....................519
10.2.4 Búsqueda secuencial en listas................................................548
10.2.5 Búsqueda en árboles ..............................................................555
10.2.6 Búsqueda en gráficas..............................................................555
10.3 Búsqueda externa............................................................................555
10.3.1 Búsqueda externa secuencial..................................................556
10.3.2 Búsqueda externa binaria........................................................559
Ejercicios................................................................................................561
Índice 565