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