salut tous le monde

J'ai une question ceci est le code d'une fonction recherche dans une liste chainée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
struct noeud* cherche (int info , struct noeud * p ) 
 { 
  while ( p && (p->cle != info ))
   { p= p->suivant ; 
      return p ; 
    }
}
est-ce que c'est juste ? Je ne comprend pas while ( p ) ?!
Quelqu'un peut m'expliquer ??

Merci d'avance