sexta-feira, 26 de abril de 2013

Listas Encadeadas 01

Vamos fazer um exemplo de implementação de listas encadeadas ou ligadas utilizando como dado um numero inteiro

Implementaremos as seguintes operações:

1 - Insercao no Inicio da Lista 
2 - Remove elementos no Inicio da Lista
3 - Mostrar a lista 
4 - Mostra o ultimo elemento da Lista
5 - Conta a quantidade de elementos da Lista  
6 - insere um elemento no final da Lista

A estrutura a ser utilizada:
struct no{
 int info;
 struct no *lig;
};
typedef struct no *lista;

ou

 typedef no {
    int info;
    lista lig;
 } *lista ;

Desta forma temos:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct no{
       int info;
       struct no *lig;
       };
typedef struct no *lista;

            
int main()
{ int x,op,cont;
  lista p,L,q;
  L = NULL;
  do{
     printf("\n 1 - Insercao no Inicio da Lista ");
     printf("\n 2 - Remove elementos no Inicio da Lista");
     printf("\n 3 - Mostrar a lista ");
     printf("\n 4 - Mostra o ultimo elemento da Lista ");
     printf("\n 5 - Conta a quantidade de elementos da Lista "); 
     printf("\n 6 - insere um elemento no final da Lista");
     printf("\n 7 - sair ");
     printf("\n Escolha uma opcao ");
     scanf("%d",&op);
     switch (op)
     { case 1: 
         printf(" Entre com um elemento ");
         scanf("%d",&x);
         p = (lista) malloc (sizeof(struct no));
         p->info = x;
         p->lig = L;
         L = p;
         break;
      case 2: 
         if (L!=NULL)         
           { p = L;
             printf("\n elemento removido foi = %d", p->info);
             L= p->lig;
             free(p);
           } else
             printf("\n a lista esta vazia "); 
           break;    
      case 3:  
          p=L;
          while (p!=NULL)
            { printf(" %d ", p->info);
              p=p->lig;
             }
           break;                                   
      case 4: 
          p=L;
          while (p->lig !=NULL)
            p = p->lig;
          printf(" \n Ultimo elemento = %d ",p->info);
            break;
      case 5:
          cont =0;
          p=L;
          while (p!=NULL)
           { cont++;
             p=p->lig;
           }
          printf(" \n A lista possui %d Elementos ",cont);
          break;
      case 6:
          printf(" Entre com um elemento ");
          scanf("%d",&x);
          q = (lista) malloc (sizeof(struct no));
          q->info = x;
          q->lig = NULL;  
          if (L==NULL)
            L = q;                              
            else
            { p =L;
              while (p->lig !=NULL)
                  p=p->lig;
              p->lig = q;
            }
           break;                             
   }// fim do switch
            
}while (op !=7);

return 0;    
}// fim do programa                




Nenhum comentário:

Postar um comentário