true c0d3

04/12/2009

Função recursiva para procurar item de uma lista

Filed under: C/C++, Programação — Etiquetas:, , — ceb10n @ 3:46 pm

Irei postando ao longo do tempo, alguns exercícios da faculdade que fiz recentemente.

Procure recursivamente um determinado valor em uma lista simplesmente encadeada. A função recebe o valor (v) e o inicio da lista (*L) como parâmetros e devolve 1 se encontrou o valor, ou 0, caso contrário.

/*=============================================================================*
* includes                                                                     *
*=============================================================================*/

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

/*=============================================================================*
* typedef                                                                      *
*=============================================================================*/

struct lista {
       int iNum;
       struct lista *pLista;
};

typedef lista Lista;

/*=============================================================================*
* declaracoes                                                                  *
*==============================================================================*
/*-----------------------------------------------------------------------------*
* declaracoes - prototipos de funcoes                                          *
*-----------------------------------------------------------------------------*/

Lista* insereLista(Lista *pLista, int iNum);
int procuraItem(Lista *pLista, int iNum);

/*-----------------------------------------------------------------------------*
* funcao "main"                                                                *
*-----------------------------------------------------------------------------*/

int main(int argc, char *argv[]) {
    int iQtdLista = 0, iProcura = 0;
    Lista *pLista = NULL;
    pLista = (Lista *) malloc(sizeof(Lista));
    
    do {
       printf("\nDigite com quantos numeros deseja preencher a lista: ");
       scanf("%d", &iQtdLista);
       } while (iQtdLista <= 0);
    
    srand(time(NULL));
    
    for (int i = 0; i < iQtdLista; i++) {
        int iNum = (int) rand() % 10000;
        printf("\n%d", iNum);
        pLista = insereLista(pLista, iNum);
    }
    
    printf("\n\nQual numero deseja procurar? ");
    scanf("%d", &iProcura);
    int ret = 100;
    ret = procuraItem(pLista, iProcura);
    
    if (ret == 1) 
       printf("\nNumero encontrado");
    else
        printf("\nNumero nao encontrado");
    
    printf("\n");
    
    system("pause");
}

/*-----------------------------------------------------------------------------*
* corpo das funções - insereLista                                              *
*-----------------------------------------------------------------------------*/

Lista* insereLista(Lista *pLista, int iNum) {
       Lista *pAux = NULL;
       pAux = (Lista *) malloc(sizeof(Lista));
       pAux->iNum = iNum;
       pAux->pLista = pLista;
       return pAux;
}

/*-----------------------------------------------------------------------------*
* corpo das funções - procuraItem                                              *
*-----------------------------------------------------------------------------*/

int procuraItem(Lista *pLista, int iNum) {
    if (pLista) {
       if (pLista->iNum == iNum) {
          return 1;
       } else {
              return procuraItem(pLista->pLista, iNum);
              }
    }
}

Deixe um Comentário »

Ainda sem comentários.

RSS feed para os comentários a este artigo. TrackBack URI

Deixar um comentário

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Modificar )

Imagem do Twitter

You are commenting using your Twitter account. Log Out / Modificar )

Facebook photo

You are commenting using your Facebook account. Log Out / Modificar )

Connecting to %s

Tema: Shocking Blue Green. Blog em WordPress.com.

Seguir

Get every new post delivered to your Inbox.