-
Notifications
You must be signed in to change notification settings - Fork 0
/
playlist_2.c
85 lines (74 loc) · 1.89 KB
/
playlist_2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Define a struct for each track in the playlist
typedef struct Track {
char title[100];
struct Track* prev;
struct Track* next;
} Track;
// Function to create a new track node
Track* createTrack(const char* title)
{
Track* track = (Track*)malloc(sizeof(Track));
strcpy(track->title, title);
track->prev = NULL;
track->next = NULL;
return track;
}
// Function to add a track to the end of the playlist
void addToPlaylist(Track** head, Track** tail, const char* title)
{
Track* newTrack = createTrack(title);
if (*head == NULL) {
*head = *tail = newTrack;
} else {
(*tail)->next = newTrack;
newTrack->prev = *tail;
*tail = newTrack;
}
}
// Function to print the playlist in forward order
void printPlaylistForward(Track* head)
{
printf("Playlist (forward order):\n");
while (head != NULL) {
printf("%s\n", head->title);
head = head->next;
}
printf("\n");
}
// Function to print the playlist in reverse order
void printPlaylistReverse(Track* tail)
{
printf("Playlist (reverse order):\n");
while (tail != NULL) {
printf("%s\n", tail->title);
tail = tail->prev;
}
printf("\n");
}
// Function to free the memory allocated for the playlist
void freePlaylist(Track* head)
{
while (head != NULL) {
Track* temp = head;
head = head->next;
free(temp);
}
}
int main()
{
Track* head = NULL;
Track* tail = NULL;
// Adding tracks to the playlist
addToPlaylist(&head, &tail, "Track 1");
addToPlaylist(&head, &tail, "Track 2");
addToPlaylist(&head, &tail, "Track 3");
// Printing the playlist in forward and reverse order
printPlaylistForward(head);
printPlaylistReverse(tail);
// Freeing the memory allocated for the playlist
freePlaylist(head);
return 0;
}