Criar um Site Grátis Fantástico
Translate to English Translate to Spanish Translate to French Translate to German Google-Translate-Portuguese to Italian Translate to Russian Translate to Chinese Translate to Japanese




ONLINE
1


Partilhe esta Página


Lista Encadeada Simples
Lista Encadeada Simples

Aulas em laboratório na Faculadade...

Para as funções abaixo, você deve utilizar o cabeçálho abaixo:

typedef enum bool{false,true}Boolean;

struct lista{
    int info;
    struct lista *prox;
};
typedef struct lista* def_lista;

 

//inicio das funções
int menu(void)
{  system("cls");
    int opcao;
    printf("1 - Inserir no inicio 2 - Inserir no final ");
    printf("3 - Busca por valor 4 - Imprimir ");
    printf("5 - Remove valor 6 - Limpa toda a lista ");
    printf("7 - Sair Escolha uma opcao acima: ");
    scanf("%d", &opcao);
    return opcao;
}


def_lista inicializa(void)
{
    return NULL;
}


def_lista cria_no(int nro)
{
    def_lista no =(def_lista)malloc(sizeof(struct lista));
    no->info = nro;
    no->prox = NULL;
    return no;
}


void insere_inicio(def_lista *Lista, int nro)
{
    def_lista no =cria_no( nro);
    if(*Lista != NULL)
    no->prox = *Lista;
    *Lista = no;
}


void insere_final(def_lista *Lista, int nro)
{
    def_lista no, aux;
    no = cria_no(nro);
    if(*Lista == NULL)
    *Lista = no;
    else{
          aux = *Lista;
          while(aux->prox != NULL)
                 aux = aux->prox;
          aux->prox = no;
    }
}


Boolean busca(def_lista Lista, int nro)
{
    def_lista aux;
    for(aux = Lista; aux != NULL; aux = aux->prox )
         if(aux->info == nro)
              return true;
    return false;
}


void imprime_lista(def_lista Lista)
{
    def_lista aux;
    printf(" Lista em geral ");
    for(aux = Lista; aux != NULL; aux = aux->prox)
          printf("%d ", aux->info);
          printf(" ");
}


void libera(def_lista Lista)
{
    def_lista t, aux = Lista;
    while(aux != NULL)
    {
         t = aux->prox;
         free(aux);
         aux = t;
    }
}


Boolean remove_no(def_lista *Lista, int nro)
{
    def_lista aux = *Lista;
    def_lista ant = NULL;
    while(aux != NULL && aux->info != nro)
    {
         ant = aux;
         aux = aux->prox;
    }
    if(aux == NULL)
         return false;
    else{
           if(ant == NULL)
                *Lista = aux->prox;
           else
                ant->prox = aux->prox;
                free(aux);
          return true;
    }
}