3.2 Music Player using linked list
Fri Aug 25 2023 06:27:10 GMT+0000 (Coordinated Universal Time)
Saved by @109_Vivek
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct Node
{
char data[30];
struct Node *prev;
struct Node *next;
};
struct Node *head = NULL;
struct Node *current = NULL;
struct Node *createNode()
{
struct Node *newNode = (struct Node *)malloc(sizeof(struct Node));
printf("Enter Song Name : ");
scanf("%s", &newNode->data);
newNode->next = NULL;
newNode->prev = NULL;
return newNode;
}
void insertAtEnd()
{
if (head == NULL)
{
head = createNode();
head->next = head;
head->prev = head;
}
else
{
struct Node *newNode = createNode();
newNode->prev = head->prev;
newNode->next = head;
head->prev->next = newNode;
head->prev = newNode;
}
}
int size()
{
struct Node*temp;
int count;
if (head == NULL)
return 0;
count = 1;
temp = head;
while (temp->next != head)
{
count++;
temp = temp->next;
}
return count;
}
void deleteAtPosition(int pos)
{
if (size() == 1)
{
free(head);
head = NULL;
}
else if (pos == 1)
{
struct Node *last = head->prev;
head = head->next;
free(head->prev);
last->next = head;
head->prev = last;
}
else if (pos < size())
{
int j;
struct Node *temp = head;
for (j = 1; j < pos; j++)
{
temp = temp->next;
}
temp->prev->next = temp->next;
temp->next->prev = temp->prev;
}
else if (pos == size())
{
head->prev = head->prev->prev;
free(head->prev->next);
head->prev->next = head;
}
else
{
printf("Invalid Position");
}
}
void traverse()
{
int i = 1;
if (head == NULL)
{
printf("Empty Playlist ! ");
}
else
{
struct Node *temp = head;
do
{
printf("\n %d. %s", i, temp->data);
temp = temp->next;
i++;
} while (temp != head);
}
printf("\n");
}
void playNext()
{
if (current == NULL)
{
current = head;
}
else
{
current = current->next;
}
}
void playPrev()
{
if (current == NULL)
{
current = head;
}
else
{
current = current->prev;
}
}
void playSpecificSong(int num)
{
int i;
if (num <= size()&& num>=1)
{
struct Node *temp = head;
for (i = 1; i < num; i++)
{
temp = temp->next;
}
current = temp;
}else{
printf("Invalid Song ! ");
}
}
void main()
{
int ch;
clrscr();
while (1)
{
printf("\n---------------------------");
printf("\n1. Add Music\n");
printf("2. Remove Music\n");
printf("3. Show Playlist\n");
printf("4. Play next Song\n");
printf("5. Play Previous Song\n");
printf("6. Play Specific Song\n");
printf("7. Exit\n");
printf("\n---------------------------");
if (current != NULL)
{
printf("\n---------------------------");
printf("\nPlaying %s.....", current->data);
printf("\n---------------------------");
}
printf("\nEnter Your Choice : ");
scanf("%d", &ch);
if (ch == 1)
{
insertAtEnd();
}
else if (ch == 2)
{
int pos;
printf("Enter Position : ");
scanf("%d", &pos);
deleteAtPosition(pos);
}
else if (ch == 3)
{
traverse();
}
else if (ch == 4)
{
playNext();
}
else if (ch == 5)
{
playPrev();
}
else if (ch == 6)
{
int num;
printf("Enter Song No. : ");
scanf("%d", &num);
playSpecificSong(num);
}
else if (ch == 7)
{
exit(0);
}
else
{
printf("Invalid Input");
}
}
}



Comments