Shaffer, Clifford A.

A practical introduction to data structures and algorithm analysis / Introduction to data structures and algorithm analysis Data structures and algorithm analysis Clifford A. Shaffer. - 2nd ed. - Upper Saddle River, N.J. : Prentice Hall, c2001. - xvi, 512 p. : ill. ; 25 cm.

Includes bibliographical references (p. 497-501) and index.

Preface xi
I PRELIMINARIES 1 (84)
Data Structures and Algorithms
3 (18)
A Philosophy of Data Structures
4 (4)
The Need for Data Structures
4 (2)
Costs and Benefits
6 (2)
Abstract Data Types and Data Structures
8 (4)
Problems, Algorithms, and Programs
12 (3)
Further Reading
15 (2)
Exercises
17 (4)
Mathematical Preliminaries
21 (28)
Sets and Relations
21 (4)
Miscellaneous Notation
25 (1)
Logarithms
26 (2)
Recursion
28 (2)
Summations and Recurrences
30 (4)
Mathematical Proof Techniques
34 (7)
Proof by Contradiction
34 (1)
Proof by Mathematical Induction
35 (6)
Estimating
41 (2)
Further Reading
43 (1)
Exercises
43 (6)
Algorithm Analysis
49 (36)
Introduction
49 (6)
Best, Worst, and Average Cases
55 (2)
A Faster Computer, or a Faster Algorithm?
57 (2)
Asymptotic Analysis
59 (6)
Upper Bounds
60 (2)
Lower Bounds
62 (1)
Θ Notation
63 (1)
Simplifying Rules
64 (1)
Calculating the Running Time of a Program
65 (5)
Analyzing Problems
70 (1)
Common Misunderstandings
71 (1)
Multiple Parameters
72 (1)
Space Bounds
73 (3)
Some Practical Considerations
76 (2)
Further Reading
78 (1)
Exercises
79 (4)
Projects
83 (2)
II FUNDAMENTAL DATA STRUCTURES 85 (132)
Lists, Stacks, and Queues
87 (54)
Lists
88 (25)
Array-Based List Implementation
91 (4)
Linked Lists
95 (10)
Comparison of List Implementations
105 (2)
Element Implementations
107 (1)
Doubly Linked Lists
108 (5)
The Dictionary ADT
113 (6)
Stacks
119 (9)
Array-Based Stacks
121 (1)
Linked Stacks
122 (2)
Comparison of Array-Based and Linked Stacks
124 (1)
Implementing Recursion
125 (3)
Queues
128 (5)
Array-Based Queues
129 (4)
Linked Queues
133 (1)
Comparison of Array-Based and Linked Queues
133 (1)
Further Reading
133 (1)
Exercises
133 (5)
Projects
138 (3)
Binary Trees
141 (50)
Definitions and Properties
141 (5)
The Full Binary Tree Theorem
143 (2)
A Binary Tree Node ADT
145 (1)
Binary Tree Traversals
146 (3)
Binary Tree Node Implementations
149 (10)
Pointer-Based Node Implementations
149 (5)
Space Requirements
154 (3)
Array Implementation for Complete Binary Trees
157 (2)
Binary Search Trees
159 (8)
Heaps and Priority Queues
167 (7)
Huffman Coding Trees
174 (11)
Building Huffman Coding Trees
176 (6)
Assigning and Using Huffman Codes
182 (3)
Further Reading
185 (1)
Exercises
186 (3)
Projects
189 (2)
Non-Binary Trees
191 (26)
General Tree Definitions and Terminology
191 (4)
An ADT for General Tree Nodes
192 (1)
General Tree Traversals
193 (2)
The Parent Pointer Implementation
195 (7)
General Tree Implementations
202 (5)
List of Children
202 (1)
The Left-Child/Right-Sibling Implementation
203 (2)
Dynamic Node Implementations
205 (2)
Dynamic ``Left-Child/Right-Sibling'' Implementation
207 (1)
K-ary Trees
207 (1)
Sequential Tree Implementations
208 (3)
Further Reading
211 (1)
Exercises
211 (3)
Projects
214 (3)
III Sorting and Searching 217 (140)
Internal Sorting
219 (40)
Sorting Terminology and Notation
219 (2)
Three Θ(n2) Sorting Algorithms
221 (6)
Insertion Sort
221 (2)
Bubble Sort
223 (1)
Selection Sort
224 (2)
The Cost of Exchange Sorting
226 (1)
Shellsort
227 (2)
Quicksort
229 (6)
Mergesort
235 (3)
Heapsort
238 (3)
Binsort and Radix Sort
241 (6)
An Empirical Comparison of Sorting Algorithms
247 (2)
Lower Bounds for Sorting
249 (4)
Further Reading
253 (1)
Exercises
254 (3)
Projects
257 (2)
File Processing and External Sorting
259 (34)
Primary versus Secondary Storage
259 (3)
Disk Drives
262 (8)
Disk Drive Architecture
263 (5)
Disk Access Costs
268 (2)
Buffers and Buffer Pools
270 (5)
The Programmer's View of Files
275 (1)
External Sorting
276 (3)
Simple Approaches to External Sorting
279 (2)
Replacement Selection
281 (4)
Multiway Merging
285 (3)
Further Reading
288 (1)
Exercises
288 (3)
Projects
291 (2)
Searching
293 (34)
Searching Sorted Arrays
294 (1)
Self-Organizing Lists
295 (6)
Searching in Sets
301 (1)
Hashing
302 (19)
Hash Functions
303 (4)
Open Hashing
307 (1)
Closed Hashing
308 (13)
Further Reading
321 (1)
Exercises
321 (3)
Projects
324 (3)
Indexing
327 (30)
Linear Indexing
329 (2)
ISAM
331 (3)
Tree Indexing
334 (2)
2-3 Trees
336 (7)
B-Trees
343 (9)
B+-Trees
344 (6)
B-Tree Analysis
350 (2)
Further Reading
352 (1)
Exercises
353 (2)
Projects
355 (2)
IV Applications and Advanced Topics 357 (136)
Graphs
359 (34)
Terminology and Representations
360 (4)
Graph Implementations
364 (3)
Graph Traversals
367 (10)
Depth-First Search
370 (1)
Breadth-First Search
371 (4)
Topological Sort
375 (2)
Shortest-Paths Problems
377 (5)
Single-Source Shortest Paths
377 (4)
All-Pairs Shortest Paths
381 (1)
Minimum-Cost Spanning Trees
382 (5)
Prim's Algorithm
383 (3)
Kruskal's Algorithm
386 (1)
Further Reading
387 (1)
Exercises
388 (2)
Projects
390 (3)
Lists and Arrays Revisited
393 (30)
Skip Lists
393 (6)
Multilists
399 (3)
Matrix Representations
402 (4)
Memory Management
406 (12)
Dynamic Storage Allocation
407 (7)
Failure Policies and Garbage Collection
414 (4)
Further Reading
418 (1)
Exercises
419 (1)
Projects
420 (3)
Advanced Tree Structures
423 (28)
Tries
423 (5)
Balanced Trees
428 (6)
The AVL Tree
428 (3)
The Splay Tree
431 (3)
Spatial Data Structures
434 (13)
The K-D Tree
436 (5)
The PR quadtree
441 (4)
Other Spatial Data Structures
445 (2)
Further Reading
447 (1)
Exercises
447 (1)
Projects
448 (3)
Analysis Techniques
451 (18)
Summation Techniques
452 (3)
Recurrence Relations
455 (6)
Estimating Upper and Lower Bounds
455 (1)
Expanding Recurrences
456 (1)
Divide and Conquer Recurrences
457 (2)
Average-Case Analysis of Quicksort
459 (2)
Amortized Analysis
461 (3)
Further Reading
464 (1)
Exercises
464 (4)
Projects
468 (1)
Limits to Computation
469 (24)
Reductions
470 (5)
Hard Problems
475 (7)
NP-Completeness
476 (5)
Getting Around NP-Complete Problems
481 (1)
Impossible Problems
482 (7)
Uncountability
483 (3)
The Halting Problem Is Unsolvable
486 (2)
Determining Program Behavior Is Unsolvable
488 (1)
Further Reading
489 (1)
Exercises
489 (2)
Projects
491 (2)
V APPENDIX 493 (4)
A Utility Functions
495 (2)
Bibliography 497 (6)
Index 503


eng.

9780130284464 TZS 127,500/=


Data structures (Computer science)
Computer algorithms.

005.73 SHA