示例#1
0
LST_tpCondRet LST_Busca( TpLista * pLista , void * informacao, int ( Compara ) ( void * pDado, void * pDado2) )
{

	LST_tpCondRet CondRet = LST_CondRetOK ;

	if ( pLista == NULL)
	{
		return LST_CondRetListaInexistente;
	} /* if */

	if ( pLista->pNoCorrente == NULL )
	{
		return LST_CondRetListaVazia ;
	} /* if */

	CondRet = LST_IrInicio ( pLista );


	while ( CondRet == LST_CondRetOK  )
	{

		if (  Compara ( pLista->pNoCorrente->pValor , informacao ) == 0) 
		{
			return LST_CondRetOK ;
		} /* if */

		CondRet = LST_Avancar ( pLista, 1 ) ;

	} /* While */

	return LST_CondRetInfoNaoEncontrada ;
}
示例#2
0
LIS_tpCondRet LIS_ProcurarValor ( LIS_tppLista pLista, void ** pConteudo, int ( Compara ) ( void* dado, void * esperado ) )
{

	tpElemLista * pElem = ( tpElemLista* ) malloc ( sizeof( tpElemLista ) );
	
	/* Tratar erro de alocação de memória */

	if ( pElem == NULL )
	{
		return LIS_CondRetFaltouMemoria;
	} /* if */ 
	
	/* fim ativa: Tratar erro de alocação de memória */

	/* Tratar lista inexistente */

	if ( pLista == NULL ) 
	{
		return LIS_CondRetListaInexistente;
	} /* if */
	
	/* fim ativa: Tratar lista inexistente */

	/* Tratar lista vazia */

	if ( pLista->pElemCorr == NULL )
	{
		return LIS_CondRetListaVazia;
	} /* if */
	
	/* fim ativa: Tratar lista vazia */

	/* Tratar procurar elemento na lista */

	pElem = pLista->pElemCorr;

	pLista->pElemCorr = pLista->pOrigemLista;

	while ( pLista->pElemCorr != NULL )
	{
		/* Tratar conteúdo dado igual ao conteúdo procurado */

		if ( Compara ( pLista->pElemCorr->pConteudo, pConteudo ) == 1 )
		{
			pLista->pElemCorr = pElem;
			return LIS_CondRetOK;
		} /* if */
	
		/* fim ativa: Tratar conteúdo dado igual ao conteúdo procurado */

		pLista->pElemCorr = pLista->pElemCorr->pProx;

	} /* for */

	pLista->pElemCorr = pElem;

	return LIS_CondRetNaoAchou;

	/* fim ativa: Tratar procurar elemento na lista*/

} /* Fim função: LIS  &Procurar elemento contendo valor */