Support us


to write
more tutorials




to create new
visualizers




to keep sharing
free knowledge
for you


every dollar helps
Explore the English language on a new scale using AI-powered English language navigator.

Data Structures and Algorithms

by Alfred V. Aho (Author), Jeffrey D. Ullman (Author), John E. Hopcroft (Author)

Data Structures and Algorithms Cover

This book is quite old, the most recent edition is dated 1983, but the basics of algorithms and data structures haven't changed much since. The book combines compactness and strictness of explanation, and algorithms are supplied with proofs and implementations. The book is not the best choice for beginners, but we would definitely recommend it to anyone, who is confident in the knowledge of basics and would like to have compact and full textbook on data structures and algorithms.

The only shortcoming of the book it that all implementations are done in Pascal. It may look like a pseudocode to those, who are not familiar with this programming language.

Focus Theory Implementation  
Level Elementary Intermediate Advanced
Language Pascal    

Explore "Data Structures and Algorithms" on Amazon.com

Table of Contents

Chapter 1   Design and Analysis of Algorithms
1.1   From Problems to Programs
1.2   Abstract Data Types
1.3   Data Types, Data Structures, and Abstract Data Types
1.4   The Running Time of a Program
1.5   Calculating the Running Time of a Program
1.6   Good Programming Practice
1.7   Super Pascal
     
Chapter 2   Basic Data Types
2.1   The Data Type "List"
2.2   Implementation of Lists
2.3   Stacks
2.4   Queues
2.5   Mapping
2.6   Stacks and Recursive Procedures
     
Chapter 3   Trees
3.1   Basic Terminology
3.2   The ADT TREE
3.3   Implementation of Trees
     
Chapter 4   Basic Operations on Sets
4.1   Introduction to Sets
4.2   An ADT with Union, Intersection, and Difference
4.3   A Bit-Vector Implementation of Sets
4.4   A Linked-List Implementation of Sets
4.5   The Dictionary
4.6   Simple Dictionary Implementations
4.7   The Hash Table Data Structure
4.8   Estimating the Efficiency of Hash Functions
4.9   Implementation of the Mapping ADT
4.10   Priority Queues
4.11   Implementation of Priority Queues
4.12   Some Complex Set Structures
     
Chapter 5   Advanced Set Representation Methods
5.1   Binary Search Trees
5.2   Time Analysis of Binary Search Tree Operations
5.3   Tries
5.4   Balanced Tree Implementations of Sets
5.5   Sets with the MERGE and FIND Operations
5.6   An ADT with MERGE and SPLIT
     
Chapter 6   Directed Graphs
6.1   Basic Definitions
6.2   Representation for Directed Graphs
6.3   The Single-Source Shortest Paths Problem
6.4   The All-Pairs Shortest Path Problem
6.5   Traversals of Directed Graphs
6.6   Directed Acyclic Graphs
6.7   Strong Components
     
Chapter 7   Undirected Graphs
7.1   Definitions
7.2   Minimum-Cost Spanning Trees
7.3   Traversals
7.4   Articulation Points and Biconnected Components
7.5   Graph Matching
     
Chapter 8   Sorting
8.1   The Internal Sorting Model
8.2   Some Simple Sorting Schemes
8.3   Quicksort
8.4   Heapsort
8.5   Bin Sorting
8.6   A Lower Bound for Sorting by Comparisons
8.7   Order Statistics
     
Chapter 9   Algorithm Analysis Techniques
9.1   Efficiency of Algorithms
9.2   Analysis of Recursive Programs
9.3   Solving Recurrence Equations
9.4   A General Solution for a Large Class of Recurrences
     
Chapter 10   Algorithm Design Techniques
10.1   Divide-and-Conquer Algorithms
10.2   Dynamic Programming
10.3   Greedy Algorithms
10.4   Backtracking
10.5   Local Search Algorithms
     
Chapter 11   Data Structures and Algorithms for External Storage
11.1   A Model for External Computation
11.2   External Sorting
11.3   Storing Information in Files
11.4   External Search Trees
     
Chapter 12   Memory Management
12.1   The Issues in Memory Management
12.2   Managing Equal-Sized Blocks
12.3   Garbage Collection Algorithms for Equal-Sized Blocks
12.4   Storage Allocation for Objects with Mixed Sizes
12.5   Buddy Systems
12.6   Storage Compaction