This guide illustrates, via examples, what data structures are, how to code them, and how to use them.
Major Sections
Preface
I -- Algorithms
II -- Abstractions and Generalizations
III -- Dynamic Array
IV -- Linked List
V -- Specialized Linear Structures
VI -- Hash-Based Structures
VII -- Binary Search Tree
Appendices
Preface
Course Overview
I -- Algorithms
101 - Introduction to Algorithms
102 - Introduction to Pseudocode
103 - OO Algorithms I
104 - OO Algorithms II
105 - Intro to Big-O
II -- Abstractions and Generalizations
Chapters
201 - Generalization and Abstraction
202 - ADT
Chapter Indexes
201 - Generalization and Abstraction
Overview
Recap
Abstraction
Generalization
References
202 - ADT
Overview
Idea
Reality
Hood Surface and Engine Quiz
ADT Example - Drawable
Defining
Using
Satisfying the ADT Spec
ADT Example - Pair
Defining
Using
Satisfying the ADT Spec
References
III -- Dynamic Array
Chapters
301 - Linear Data Structure
302 - Fixed Array
303 - Dynamic List Logic
304 - Dynamic Array
305 - Dynamic Array Code Challenge
306 - Big-O Complexity Analysis for a Dynamic Array
307 - Iterators
Chapter Indexes
301 - Linear Data Structure
What Is A Linear Data Structure?
Examples
Types Of Linear Structures
302 - Fixed Array
303 - Dynamic List Logic
304 - Dynamic Array
305 - Dynamic Array Code Challenge
306 - Big-O Complexity Analysis for a Dynamic Array
307 - Iterators
Videos
Overview
Iterator Concepts
What and Why?
ADT
Examples
References
Iterator Design
IV -- Linked List
Chapters
401 - Linked List Logic
402 - Linked List Code
403 - Big-O Complexity Analysis for a Linked List
404 - Iterators
Chapter Indexes
401 - Linked List Logic
Overview
OO Review
Abbreviations
Design
Traversing
Concepts and Algorithms
Memory Usage
402 - Linked List Code
Overview
403 - Big-O Complexity Analysis for a Linked List
404 - Iterators
V -- Specialized Linear Structures
Chapters
501 - Specialized Linear Structures
502 - Stack
503 - Queue
504 - Deque
505 - Bag
506 - Specialized Structure Challenge
Chapter Indexes
501 - Specialized Linear Structures
502 - Stack
What and Why
What is a Stack?
Structure
Why a Stack?
Fundamental Operations
Push
Pop
LIFO
Traversal (Iteration)
Top and Bottom Explained
ADT
References
503 - Queue
What and Why
What is a Queue?
Why a Queue?
Fundamental Operations
Enqueue
Dequeue
FIFO
Traversal (Iteration)
ADT
References
504 - Deque
What and Why
What is a Deque?
Why a Deque?
Deque vs Stack
Deque vs Queue
Fundamental Operations
addFirst and addLast
removeFirst and removeLast
FIFO or LIFO?
Traversal (Iteration)
ADT
References
505 - Bag
What and Why
What is a Bag?
Why a Bag?
Gotcha -- Not Random 🐞
Fundamental Operations
FIFO or LIFO?
Traversal (Iteration)
ADT
References
506 - Specialized Structure Challenge
VI -- Hash-Based Structures
601 - Hash Table Concepts
602 - Hash Table Object Design
VII -- Binary Search Tree
701 - Introduction to Tree Data Structures
702 - Binary Search Tree (BST) Concepts
703 - BST Design
704 - BST Coding Challenge
Appendices
Chapters
901 - Video Listing
902 - Unit Testing
903 - FAQs
904 - Drills and Assignment Listing
Chapter Indexes
901 - Video Listing
Overview
Latest
Introduction to Algorithms
OO Algorithms I (A3)
Functions
Algorithm Play and Algorithm Studio
Abstractions and Generalizations
Core Linear Structures
Dynamic Array
Specialized Structures
Hash Table
902 - Unit Testing
Overview
General Unit Test Pattern 💡
Smoke Test
Functional Test
Testing Lessons Learned
Start with 'Smoke Tests' to Find 'Blocker Bugs'
Continue with Functional Testing
Do Not Put Test Code in Same Directory as Domain/Model Code
Test Objects (Not Just Primitives)
Equals Over '=='
Collections Take Special Care
Test Code Styles
Overview
Example Tests (Different Test Strategies)
Simple Unit Test Examples
Overview
Examples
Example 1 -- Testing with Primitives
Example 2 -- Testing with Proper Objects
903 - FAQs
904 - Drills and Assignment Listing
Data Structures And Algorithms (DSA)
Data Structures And Algorithms
Quick Index
Top
Search