ここで何が起こっているのか、私は本当に混乱しています..
私は機能を持っています
void addToFront(int data)  
{
  Node* tmp = new Node();
  tmp -> data = data;
  tmp -> next = head;
  head = tmp;
}
行を実行するtmp-> next = headと、tmpポインターheadが指しているもの (リストの現在の最初の要素) を指すようになりますか? それはそれがどのように感じるかですが、それは単にそれを指し示すのではないheadでしょうか? すると、head = tmp作成した新しいノードに頭を向けることになりますよね?