/* Trouve dans la liste chaînée le premier nœud dont la valeur est supérieure ou ou égale à une valeur clé, et retourne un pointeur sur le nœud qui le précède (pour faciliter l'insertion ou la suppression), ou un pointeur NULL si aucune valeur n'est trouvée. Suppose que la liste se termine Par un nœud de queue pointant sur lui-même. */ #include #include "llist.h" struct LinkNode *FindNodeBeforeValueNotLess( struct LinkNode *HeadOfListNode, int SearchValue) { struct LinkNode *NodePtr = HeadOfListNode; while ( (NodePtr->NextNode->NextNode != NodePtr->NextNode) && (NodePtr->NextNode->Value < SearchValue) ) NodePtr = NodePtr->NextNode; if (NodePtr->NextNode->NextNode == NodePtr->NextNode) return(NULL); /*nous avons trouvé la sentinelle; la recherche a échoué */ else return(NodePtr); /*nous avons réussi; retour du pointeur sur le nœud précédent >= */ }