/dsa-learning

This repository contains the code related to my progression in learning data structures and algorithms (dsa), mostly implemented in C and eventually in OCaml

Primary LanguageC

DSA (Data structures & Algorithms) Learning

This repository contains multiple implementations of data structures and algorithms in C (and potentially in OCaml in the future). It serves as a record of my progress, in case I need to reference it, and could be useful for anyone interested in learning data structures and algorithms.

For each data structure or algorithm, you will find a list of three LeetCode exercises (Easy-Medium-Hard) and one exercise that demonstrates a real use case of this data structure/algorithm. Please note that these exercises were generated with ChatGPT; hence, some of them might not be relevant.

DSA roadmap

Here is the list of all data structures and algorithms this repository will contain, it follows Programiz course order on DSA :

Data Structures (1)

  • Stack
  • Queue
  • Circular queue
  • Priority queue
  • Deque

Data Structures (2)

  • Linked List
  • Hash Table
  • Heap
  • Fibonacci Heap

Tree DSA (1)

  • Tree
  • Binary Tree
  • Full Binary Tree
  • Perfect Binary Tree
  • Complete Binary Tree
  • Balanced Binary Tree
  • Binary Search Tree
  • AVL Tree

Tree DSA (2)

  • B Tree
  • B+ Tree
  • Red Black Tree

Graph Algorithms

  • Graph
  • Spanning Tree
  • Strongly Connected Components
  • Adjacency Matrix
  • Adjacency List
  • DFS Algorithm
  • Breadth-first Search
  • Bellman Ford's Algorithm

Searching and Sorting Algorithms

  • Bubble Sort
  • Selection Sort
  • Insertion Sort
  • Merge Sort
  • Quick Sort
  • Counting Sort
  • Radix Sort
  • Bucket Sort
  • Heap Sort
  • Shell Sort
  • Linear Search
  • Binary Search

Greedy Algorithms

  • Greedy Algorithm
  • Ford-Fulkerson Algorithm
  • Dijkstra's Algorithm
  • Kruskal's Algorithm
  • Prim's Algorithm
  • Huffman Code

Dynamic Programming (DP)

  • DP
  • Floyd Marshall Algorithm
  • Longest Common Subsequence

Others

  • Backtracking Algorithm
  • Rabin-Karp Algorithm
  • Sliding Window
  • Bit Manipulation