Data Structures Theory
Arrays and Linked Lists
Arrays
- Array representation in memory
- Array operations and time complexity
- Dynamic arrays
- Multi-dimensional arrays
- Advantages and disadvantages
Linked Lists
- Singly linked lists
- Doubly linked lists
- Circular linked lists
- Linked list operations (insert, delete, search)
- Time complexity analysis
- When to use arrays vs linked lists
Stacks and Queues
Stacks
- LIFO (Last In First Out) principle
- Stack operations (push, pop, peek)
- Stack implementation (array-based, linked list-based)
- Applications (expression evaluation, backtracking, function calls)
- Time complexity
Queues
- FIFO (First In First Out) principle
- Queue operations (enqueue, dequeue, front)
- Queue implementation
- Priority queues
- Deque (double-ended queue)
- Applications (BFS, scheduling, buffering)
Trees and Graphs
Trees
- Tree terminology (root, node, leaf, depth, height)
- Binary trees
- Binary search trees (BST)
- Tree traversals (inorder, preorder, postorder, level-order)
- Balanced trees (AVL, Red-Black)
- Tree operations and time complexity
Graphs
- Graph representation (adjacency list, adjacency matrix)
- Graph types (directed, undirected, weighted)
- Graph traversals (BFS, DFS)
- Common graph algorithms
- Time and space complexity
Hash Tables
Hash Tables
- Hash function concepts
- Collision resolution (chaining, open addressing)
- Load factor
- Time complexity analysis
- Hash table implementation
- Applications
Hash Functions
- Properties of good hash functions
- Common hash functions
- Cryptographic vs non-cryptographic hashes
- Collision probability
Practice Questions
Test your understanding with the questions in the interactive quiz below (when available).
Resources
- "Introduction to Algorithms" by Cormen, Leiserson, Rivest, and Stein
- Data Structures Visualization: https://visualgo.net/
- LeetCode: https://leetcode.com/
- GeeksforGeeks Data Structures: https://www.geeksforgeeks.org/data-structures/