This repository contains the exercises and mid-term tests completed for the "Algorithms and Data Structures" course during my Erasmus exchange program at the University of Southern Denmark, Odense.
The course focused on foundational and advanced topics in algorithms and data structures, with an emphasis on implementing efficient solutions using C++. It covered core concepts of object-oriented programming and practical problem-solving techniques.
Key topics learned and implemented during the course include:
-
Principles of Object-Oriented Programming (OOP) in C++
Fundamental concepts such as classes, objects, inheritance, and polymorphism. -
Data Structures
Implementation and manipulation of:- Linked Lists (e.g., Queues, Circular Queues)
- Trees
- Hash Tables
-
Sorting Algorithms
Studied and implemented various sorting techniques, including:- Mergesort
- Bubblesort
- Quicksort
- Bucketsort
- Heapsort
-
Shortest Path Problems
Solutions to finding the shortest path in various graph-based scenarios. -
Graphs
Implementation and traversal of graph structures using algorithms like DFS and BFS.
One of the standout assignments from the course was the Knight_King exercise, where the goal was to develop an algorithm to determine the shortest path for a chess piece (Knight or King) between a given start and end position on a chessboard. The exercise required:
- Designing an efficient pathfinding algorithm.
- Working with graph traversal techniques.
- Handling edge cases in the chessboard constraints.
This project showcases the practical application of data structures (graphs) and algorithms (shortest path techniques).