Welcome to the Java Programming, Data Structures, and Algorithms repository!
This repository is a complete guide for learning Java programming, understanding core data structures, and mastering essential algorithms β all in one place. Itβs designed for students, beginners, and professionals revisiting fundamental computer science concepts.
- β Step-by-step Java examples
- π§© Data Structures implemented from scratch
- βοΈ Core and advanced Algorithms
- π‘ Clear explanations and code comments
- π§ͺ Example inputs/outputs for clarity
- ποΈ Well-organized modular project structure
- β‘ Beginner-friendly and ready to run
| Component | Description |
|---|---|
| Language | Java (JDK 17 or later) |
| Compiler | javac (Java Compiler) |
| IDE Support | IntelliJ IDEA, VS Code, Eclipse, NetBeans |
| Build Tools | Maven / Gradle (optional) |
Java-Programming-DataStructures-Algorithms/
βββ README.md
βββ 01_Basics/
β βββ HelloWorld.java
β βββ Operators.java
β βββ ControlStatements.java
β βββ Loops.java
β βββ ArraysIntro.java
β βββ InputOutput.java
β
βββ 02_ObjectOrientedProgramming/
β βββ ClassesObjects.java
β βββ InheritanceDemo.java
β βββ Polymorphism.java
β βββ Encapsulation.java
β βββ Abstraction.java
β
βββ 03_Data_Structures/
β βββ Arrays/
β β βββ LinearSearch.java
β β βββ BinarySearch.java
β βββ LinkedLists/
β β βββ SinglyLinkedList.java
β β βββ DoublyLinkedList.java
β β βββ CircularLinkedList.java
β βββ Stacks/
β β βββ StackUsingArray.java
β β βββ StackUsingLinkedList.java
β βββ Queues/
β β βββ QueueUsingArray.java
β β βββ QueueUsingLinkedList.java
β βββ Trees/
β β βββ BinaryTree.java
β β βββ BinarySearchTree.java
β β βββ TreeTraversal.java
β βββ Graphs/
β β βββ GraphAdjacencyList.java
β β βββ GraphAdjacencyMatrix.java
β βββ Hashing/
β β βββ HashMapDemo.java
β β βββ HashSetDemo.java
β βββ Heaps/
β βββ MinHeap.java
β βββ MaxHeap.java
β
βββ 04_Algorithms/
β βββ Searching/
β β βββ LinearSearch.java
β β βββ BinarySearch.java
β βββ Sorting/
β β βββ BubbleSort.java
β β βββ SelectionSort.java
β β βββ InsertionSort.java
β β βββ MergeSort.java
β β βββ QuickSort.java
β βββ Recursion/
β β βββ Factorial.java
β β βββ Fibonacci.java
β β βββ TowerOfHanoi.java
β βββ DivideAndConquer/
β β βββ BinarySearchRecursive.java
β βββ Greedy/
β β βββ ActivitySelection.java
β β βββ FractionalKnapsack.java
β βββ DynamicProgramming/
β β βββ FibonacciDP.java
β β βββ LongestCommonSubsequence.java
β β βββ Knapsack01.java
β β βββ CoinChange.java
β βββ GraphAlgorithms/
β β βββ BFS.java
β β βββ DFS.java
β β βββ Dijkstra.java
β β βββ Kruskal.java
β β βββ Prim.java
β β βββ TopologicalSort.java
β βββ Backtracking/
β βββ NQueens.java
β βββ SudokuSolver.java
β
βββ 05_Extras/
βββ FileHandling.java
βββ ExceptionHandling.java
βββ LambdaExpressions.java
βββ CollectionsFrameworkDemo.java
- Variables, Data Types, Operators
- Control Statements (
if,switch,loops) - Methods and Recursion
- Arrays and Strings
- Input/Output and Exception Handling
- Classes and Objects
- Constructors,
this&superkeywords - Inheritance, Polymorphism, Encapsulation, Abstraction
- Interfaces and Abstract Classes
- Packages and Access Modifiers
- Arrays & Strings
- Linked Lists (Singly, Doubly, Circular)
- Stacks and Queues
- Trees (Binary Tree, BST, Traversals)
- Heaps (Min/Max)
- Graphs (Adjacency List / Matrix, BFS, DFS)
- Hash Maps, Sets, and Priority Queues
- Linear Search
- Binary Search (Iterative & Recursive)
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Counting Sort
- Radix Sort
- Factorial, Fibonacci
- Tower of Hanoi
- N-Queens Problem
- Sudoku Solver
- Binary Search
- Merge Sort
- Quick Sort
- Activity Selection
- Fractional Knapsack
- Huffman Coding
- Job Sequencing
- Fibonacci (DP Approach)
- Longest Common Subsequence (LCS)
- 0/1 Knapsack
- Coin Change Problem
- Matrix Chain Multiplication
- Longest Increasing Subsequence
- Breadth First Search (BFS)
- Depth First Search (DFS)
- Dijkstraβs Algorithm
- Kruskalβs Minimum Spanning Tree
- Primβs Algorithm
- Topological Sorting
- Bellman-Ford Algorithm
- Floyd-Warshall Algorithm
# Clone the repository
git clone https://github.com/SatinderSinghSall/Java-Programming-DataStructures-Algorithms.git
# Navigate to the project folder
cd Java-Programming-DataStructures-Algorithms
# Compile and run an example
javac 03_Data_Structures/LinkedLists/SinglyLinkedList.java
java 03_Data_Structures.LinkedLists.SinglyLinkedListSinglyLinkedList.java
public class SinglyLinkedList {
static class Node {
int data;
Node next;
Node(int data) { this.data = data; }
}
public static void printList(Node head) {
Node current = head;
while (current != null) {
System.out.print(current.data + " -> ");
current = current.next;
}
System.out.println("NULL");
}
public static void main(String[] args) {
Node head = new Node(10);
head.next = new Node(20);
head.next.next = new Node(30);
printList(head);
}
}Output:
10 -> 20 -> 30 -> NULL
Satinder Singh Sall πΌ Full-Stack Developer | Programmer | Code Enthusiast π Portfolio π GitHub π§ [email protected]
Contributions are always welcome! To contribute:
- Fork the repository π΄
- Create a new branch (
feature/your-feature) - Commit your changes
- Submit a Pull Request π
π‘ "First, solve the problem. Then, write the code." β John Johnson