I redid it with comments to my understanding of what is going on. When I print this, it only prints one node and its always the last node I insert. I did plot it out on paper and it seems to me that it should be working fine. I don't know how to write a function for checking if the pointers are working correctly or not, I don't want you to write it for me either :P. Its not you're job x.x.

Code:

// =============
// InsertFirst()
// ==========================================
void DoublyLinkedList::InsertFirst( int value ){
Node* newNode = new Node(value, NULL, NULL);
Node* ptr;
newNode->next = first; // sets the newNode nextPtr to point to the now 2nd node.
first = newNode; // sets first to point to the new node which is now the first node in the sequence
newNode->previous = NULL; // makes previous point to NULL
if(Length() > 1){
newNode->next->previous = newNode; // Sets the 2nd node in the sequence previous to the 1st node.
}
else
newNode->next = NULL; // if theres only one Node in the sequence, sets next to NULL;
if(Length() <= 1)
last = first; // sets last to NULL if there is only one node in the sequence.
}//InsertFirst()
// ================