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 ; }
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 */