It is a linked list, not a stack.
Your comments are everything that is wrong with making comments.
Code:
int size = strlen(name); // finds length of name but makes a error //
What error?
Code:
for (i=0;i<size;i++)
root->name[i] = name[i]; // loop is empty//
The very line you commented makes the loop not empty.
Code:
else // loop is not empty //
What loop?
Code:
temp = malloc(sizeof(struct music)); // makes memory for temp //
Obviously.
Code:
temp -> name[i]=name[i]; // loop and pointer
What does that mean?
Code:
temp -> next=NULL; //points to the top //
A linked list is distinct from a stack.
Code:
prev -> next=temp; // points to the new node //
Obviously.
Code:
j++; // not working //
Why not?
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.