← Back to Projects

Music Player (DSA)

Console-Based Music Management System

đŸ’ģ C++ 🔗 Linked Lists #ī¸âƒŖ Hashing 📊 Data Structures
â„šī¸

Project Not Deployed

This is an academic/portfolio project showcased here for demonstration purposes. The live application is not currently deployed online.

Project Overview

A console-based music player application demonstrating practical implementation of fundamental data structures and algorithms. The project showcases efficient playlist management using linked lists and fast song retrieval through hash table implementation.

Key Features

  • Playlist Management: Dynamic playlist creation, modification, and deletion using doubly linked lists for bidirectional navigation
  • Fast Song Lookup: Hash table implementation for O(1) average-case song retrieval by title or artist
  • Playback Controls: Full suite of controls including play, pause, next, previous, shuffle, and repeat
  • Search Functionality: Multiple search criteria including song name, artist, album, and genre
  • Queue Management: Implementation of queue data structure for upcoming songs and play history
  • File I/O: Persistent storage of playlists and user preferences using file handling

Technical Implementation

The application leverages C++'s object-oriented features to create a modular, maintainable codebase. Linked lists provide efficient insertion and deletion operations for playlist management, while hash tables enable rapid song lookups without linear search overhead.

Data Structures

Custom implementations of doubly linked lists, hash tables, and queues optimized for music player operations

Algorithm Efficiency

O(1) song lookup, O(n) playlist traversal, and efficient memory management

OOP Design

Clean class hierarchy with Song, Playlist, and Player classes following SOLID principles

Challenges & Solutions

Challenge: Implementing efficient shuffle functionality without duplicates.
Solution: Used Fisher-Yates shuffle algorithm with array-based temporary storage for O(n) time complexity.

Challenge: Managing memory efficiently with dynamic playlist sizes.
Solution: Implemented proper destructor chains and smart pointer-like mechanisms to prevent memory leaks.

Impact & Results

This project demonstrates deep understanding of fundamental computer science concepts and their practical applications. It showcases the ability to choose appropriate data structures for specific use cases and implement them efficiently in C++.