Mettre en œuvre un algorithme d'insertion d'un nœud dans une circulaire de la liste liée, sans le traverser

Je pensais à une solution à ce problème.

Mon entrée:
1. Une queue pointeur qui pointe vers le dernier nœud.
2. Une fois que vous savez le dernier pointeur vous pouvez facilement ajouter un nouveau nœud à côté d'elle.

Void Insert(Node N)
{  
    if (head == null) //linked list is empty
    {
       head = N; tail = N; tail.Next = head;
    } 
    else
    {        
      Node temp = tail.Next; //since this is circular tail will point to head
      Tail.Next = N;
      N.Next = temp; //correct 
      tail = N;       
    }
}

Any1 peut imaginer une meilleure solution sans l'aide de la queue de pointeur? Aussi, comme indiqué dans le problème sans le traverser?
C'est une question d'entrevue, juste besoin de quelques entrées pour trouver la meilleure solution.

où est le point d'insertion?
après le dernier nœud
Il y a un bug là, je crois qu'il devrait être N. Next = temp. En dehors de cela, il me semble une très bonne façon de faire les choses...
Hey Jaime, merci pour la capture de l'insecte. J'ai édité mon code

OriginalL'auteur Learner | 2009-07-08