It is a linked list, not a stack.
Your comments are everything that is wrong with making comments.
int size = strlen(name); // finds length of name but makes a error //
The very line you commented makes the loop not empty.
root->name[i] = name[i]; // loop is empty//
else // loop is not empty //
temp = malloc(sizeof(struct music)); // makes memory for temp //
What does that mean?
temp -> name[i]=name[i]; // loop and pointer
A linked list is distinct from a stack.
temp -> next=NULL; //points to the top //
prev -> next=temp; // points to the new node //
j++; // not working //
If you want to understand linked lists, there is a certain amount of code that everyone writes and that everyone considers a single operation, as if C had support for linked lists out of the box. This is because there is a certain amount of code that just inserts a node into a list, or a certain amount that deletes a node from a list, et cetera. These are all tasks that need to be understood in order to work with the data structure.
The best tutorial I think is available is here. You don't have to read all of it, but come back when you have an understanding of the concept and a few of the basic operations, like how to insert a node in a list and delete a node in a list. Even with just that information you can start to use lists effectively.