
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Course Introduction.
Understand about data structure and it's importance with example.
Lets explore about linear data structures and non-linear data structures, along with abstract data types.
Understand the concepts of Time complexity and Space Complexity and learn the rules to calculate time complexity for worst case scenario.
Array, one of the most fundamental data structures used to store fixed number of values of same data types.
Declare an array in java and implement several array operations.
Write code to find continuous sub-array whose sum is equal to a given number.
Write code to reverse an array without using an additional array.
Explore dynamic array and internal working.
Introduction to List Data Structure.
Let's understand about an ArrayList, its properties and internal working.
Implementations of major operations of an ArrayList.
Write a program to synchronize an ArrayList.
Write a program to remove duplicates from an ArrayList.
Introduction to LinkedList definition, properties and uses.
Explore linked list operations in Java, including creation, insertion, updating, reading, and deletion of elements. Learn to use get, set, remove, and offer for list elements.
Write a program to insert a node at the middle position of a linked list.
Write a program to delete the middle node of a LinkedList.
Write a program to detect loop in a LinkedList.
Doubly Linked List introduction, properties and internal implementation.
Write a program to reverse a doubly linked list.
Introduction to circular linked list, its properties, uses and internal implementation.
Write a program to convert a singly linked list into a circular linked list.
Introduction to vector data structure, its properties, uses and internal implementation.
Explore vector operations in Java, including creating a vector with initial capacity 10, inserting, updating, reading by index, removing elements, and iterating with an iterator.
Write a program to find the K-th smallest divisor of a natural number N.
Write a program to find four factors of a given integer N with maximum product and sum equal to N.
Implement a Stack using an ArrayList.
Implement a Stack using a LinkedList.
Explore stack operations in Java by creating a static stack, inserting and updating elements with push and item methods, reading and peeking at top, and deleting using pop or remove.
Write a program to convert an infix expression to a postfix expression using stack.
Write a program to implement two stacks using only one Array.
Introduction to queue, its properties and uses.
Explore the internal implementation of a queue using a linked list, with front and rear pointers managing insertions and removals behind the scenes.
Write a program to implement a Queue using Linked List.
Write a program to implement a Queue using Stack data structures.
Introduction to Priority Queue, its properties, declaration in java and its uses.
Demonstrate building a priority queue of integers in java and performing insertions with offer (and add), then remove and poll, and inspect the front element with peek.
Write a program to implement a Priority Queue using a Linked List.
Introduction to Set data structure.
Java hash sets store unique elements, do not preserve order, allow nulls, and use hash codes and equals for fast lookup, spell checking, with capacity 16 and load factor 0.75.
Explore how a hash set is implemented via a map, where each element becomes a key and a default value like present is stored.
Demonstrate sorting values from a set by converting to a list and sorting it, showing how an unordered set affects output order and how a list-based sort resolves it.
Explore the internal implementation of LinkedHashSet by examining its LinkedHashMap-based structure, including the entry class and before and after links, and the insertion and access order.
Explore TreeSet code challenge 1 and its solution by creating a set, adding strings, and printing sorted results, contrasting with prior linked-list approaches.
Explore the hash map data structure in Java, including definition, properties, declaration options with initial capacity and load factor, and constant-time retrieval of unique keys in an unordered, non-synchronized store.
Explore the internal implementation of a hashmap, including hashing and equals for inserts, bucket indexing, linked lists and treeification, collision handling, and get operations.
Explore a hashmap code challenge 1 solution by counting the frequency of each character in a string, using a map of character keys to integer values, then printing the results.
Convert a HashMap to a TreeMap in Java by solving the HashMap code challenge and reviewing the solution, with practical map entries and a runnable example.
Explore linked hash map concepts, including insertion order, unique keys, and null handling, and see how it combines a hash map with a doubly linked list to maintain element order.
Explore LinkedHashMap in Java by creating maps, inserting data with put, retrieving with get, and removing or updating entries, while understanding order and essential methods.
Explore how LinkedHashMap uses access order versus insertion order to implement least recently used behavior, with a code demo showing how get operations reshuffle entries and drive LRU cache concepts.
Examine the internal implementation of a tree map as a self-balancing binary search tree with a red-black tree. See how colors, rotations, and rebalancing preserve tree properties.
Learn to implement CRUD operations on a Java TreeMap, using put, get, update, and remove, with ascending order and exploration of descending map, ceiling key, and higher key methods.
Explore how a hash table provides synchronized storage, no null keys or values, its internal implementation, and when to use it versus a concurrent hash map in Java.
Explore essential hash table methods in Java, including insert with put, fetch with get, remove, update, and queries like contains, clone, clear, and compute, noting the synchronized behavior of Hashtable.
Develop a Java program to find all symmetric pairs from a given array of numbers using a hash table, and print the identified symmetric pairs.
Explore the tree data structure, its properties, implementations, and when to use it, including root and leaf nodes, left and right children, height, levels, and basic internal representation.
Explore the binary tree data structure, its properties (at most two children), and Java implementation. Understand root, left and right children, leaves, and level-based node counts.
Implement level order traversal of a binary tree using a queue to print nodes level by level from root to leaves, with a Java implementation and O(n) time.
Learn to implement pre-order tree traversal using a stack to iteratively visit nodes in root-left-right order by pushing right child before the left, ensuring the left subtree is processed first.
This lecture explains implementing a post-order traversal of a binary tree in Java using a stack, visiting left, right, then root, and printing nodes as they are popped.
Master the binary search tree in Java, understanding its left-subtree values less than the root and right-subtree values greater, with no duplicates, and node-based implementation with search, insert, and delete.
Learn to implement a max heap in java, inserting elements to maintain the max-heap property where the root is the maximum and each parent exceeds its children.
Master the graph adjacency matrix implementation in Java by building a two dimensional array, marking edges as one for connections, ensuring symmetry for undirected graphs, and printing the adjacency matrix.
Implement an adjacency list for an undirected graph using an array of linked lists. Add edges, print the adjacency, and compare space efficiency with adjacency matrices and time complexity O(V+E).
Count total paths from a source to a destination in a directed graph using backtracking and recursion, while avoiding cycles with a visited array.
Data Structures and Algorithms are the most important and fundamental building blocks of computer science and any coding interviews. A good knowledge of data structures & algorithms is a must for designing and developing an efficient software application. This course will covers all the practical data structures of Java Collections Framework along with several important algorithms that we often use for application development and explore in depth about its working, properties and practical significance in creating efficient and reliable software applications. Here, we will explore and analyse about various data structures and algorithms like Arrays, Linked List, Stack, Queue, Priority Queue, Set, Map, Hashtable, Tree, Binary Search Tree, Heaps, Graphs, Graph Algorithms, Search Algorithms, Sort Algorithms and many more.
The objective of this course is to enable students to:
Develop deeper understanding of Data Structures and Algorithms.
Master Arrays, Linked List, Stack, Queue, Priority Queue, Set, Map, Hashtable, Tree, Heaps, Graphs.
Master Sorting Algorithms, Searching Algorithms, Graph Algorithms.
Ace Coding Interviews.
Understand how a data structure works internally.
Develop an understanding of when to use which data structure and algorithm.
Understand Space and Time complexity of using a particular Data Structure or algorithm.
Implement any coding exercise confidently.
This course is designed, keeping simplicity as a priority so that even beginners will find it easy to understand and practice simultaneously. The coding language, I have used here is Java, however one can practice in any language as the concepts behind data structures and algorithms remains the same across various programming languages. So go ahead and enroll now. I will see you in the next lesson.
What Students say about this course ?
Good content and easy to understand the Data Structure concepts. The well explained coding examples and questions asked in quiz are helpful for interview preparation. - Keerti Joshi
Helped me to understand about data structures even more clearly, especially the internal implementations of each data structures. - Anuradha Singh