Code:
root->x = 12; // why are we jumping to 12? How would this be done in a real-world prog?
You are not jumping to the 12th element, you are setting the value of the root element to 12 (see the declaration of the node struct)
Code:
if ( conductor != 0 ) {
while ( conductor->next != 0)
conductor = conductor->next;
}
here you are going trhough every element of the list until you hit the end. The last node is identified by the fact that its next pointer is null (next = 0).
Code:
conductor->next = new node; // Creates a node at the end of the list
conductor = conductor->next; // Points to that node
conductor->next = 0; // Prevents it from going any further
conductor->x = 42;
And finally here you add an element to the end of the list. Notice that the formerly last element next pointer now points to the new element and the new element next pointer is null.
As they said before linked listst are very useful when you have data collections that can greatly vary in size. An array would force you to either copy all the data over and over as you keep on enlarging it to make space for new data or to waste large amounts of space by making an array as big as the maximum number of elemnts you could ever have (which micht impossible to know beforehand).
Linked lists on the other hand can grow and shrink quickly and easily by tacking on more elements at either end or even in the middle by changing the value of at most 2 pointers (for a singly linked list).