It's not clear to me what your question is exactly. But in order to declare a pointer, you need to use the asterisk. node newNode = new node is simply invalid.
1. The new operator returns a pointer to the newly created object. So you must store this pointer.
2. a struct that has pointer member is not a pointer in it self, so *anotherNode would not make much sense. do you mean &anotherNode
3. in doing this newNode->next = *anotherNode; your assigning a value to the member next, which is a pointer. Also -> only works with pointers so, newNode must be a pointer.
can you clarify a little when you say newNode->next = &anotherNode, why can't this be done? I was under impression a structure stores different data types and so a pointer is just another type that points to a nother struct...
newNode->next is a pointer to an object of type node; but node newNode (as in your example in your first post) is an object. If you are wanting to instantiate your object without using new, you just type node newNode. This syntax calls its constructor (if it has a default one.)
That's a lot of options, clanmjc and i'm going to absorb it slowly, and I guess gist is the new operator returns a pointer as blueberry indicated so I must have left hand side be a pointer as in: node *newNode = new node;