Introduction
Understand what data structures are, why they matter and their main types.
A data structure is a specialized format for organizing, storing, and manipulating data on a computer. Data structures are designed to manage and arrange data in a way that enables efficient access and modification. They serve as the building blocks for algorithms and are critical for the design and implementation of software and databases.
Understand what data structures are, why they matter and their main types.
Learn how ADTs describe what a data structure does without defining how.
Learn what a linked list is, its advantages over arrays and its limitations.
Learn singly linked list operations with algorithms and a C program.
Implement a stack using an array: push, pop, peek and a C program.
Implement a stack using a linked list with a top pointer.
Implement a queue using an array: enqueue, dequeue and overflow checks.
Implement a queue using a linked list with a head pointer.
Explore function calls, recursion and expression notations using stacks.
Convert infix expressions into postfix notation using a stack.
Evaluate postfix expressions using an operand stack.
Learn the characteristics of dictionaries and the ways to implement them.
Represent a dictionary using a linear list.
Learn how a skip list gives fast search, insertion and deletion in an ordered dictionary.
Learn the basics of hash tables and hashing.
Learn the properties of good hash functions and how keys map to indexes.
Understand collisions and the techniques used to resolve them.
Resolve collisions by keeping a chain of items at each slot.
Learn linear probing, quadratic probing and double hashing.
Learn how a hash table is resized and its keys re-inserted.
Understand dynamic hashing that grows by splitting buckets.
Learn tree terminology and the basic concepts of hierarchical data.
Learn how binary trees are represented in memory.
Learn inorder, preorder and postorder traversals of a binary tree.
Learn searching, insertion and deletion in a binary search tree.
Understand self-balancing trees and rotations.
Learn the properties and balancing rules of red-black trees.
Learn how splaying moves recently accessed nodes to the root.
Understand multiway search trees used for disk-based storage.
Learn B+ trees and how they differ from B trees.
Compare the different tree structures side by side.
Learn graph terminology, types and basic concepts.
Learn adjacency matrix and adjacency list representations.
Traverse a graph level by level using a queue.
Traverse a graph as deep as possible using a stack, then backtrack.
Learn divide-and-conquer sorting using a pivot and partitioning.
Learn two-way merge sort and its O(n log n) running time.
Sort using a binary heap with max-heap and min-heap.
Learn the basic concepts and common pattern matching algorithms.
Check the pattern at every position of the text.
Use the bad character table to skip comparisons while matching.
Use the failure (LPS) array to avoid re-comparing characters.
Learn the trie (prefix tree) for storing strings and fast pattern matching.
Learn the basic form of a trie and its operations.
Learn how merging single-child nodes saves space.
Learn tries that store all suffixes of a text.