Você está na página 1de 3

Prof Alessandra

Ali Mohamad Termos


Lista encadeada

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include "LE.h"

/* função de criação de lista: retorna lista vazia*/


lista* cria(void){
return NULL;
}

lista* insere(lista* l, int i){


lista* novo=(lista*) malloc(sizeof(lista));
novo->valor=i;
novo->prox=l;
return novo;
}

/* função vazia: retorno 1 se vazia ou 0 se não vazia*/


int lista_vazia(lista* l){
if(l==NULL)
return 1;
else
return 0;
}

/* função que imprime elementos da lista*/


void imprime(lista* l){
if(!lista_vazia(l)){
lista* aux;
for(aux=l;aux!=NULL;aux=aux->prox)
printf("valor = %d\n",aux->valor);
}
else
printf("\nTentou imprimir uma lista vazia");
}

/* função que busca um elemento na lista*/


lista* busca(lista* l, int busca){
lista* aux;
if(!lista_vazia(l)){
for(aux=l;aux!=NULL;aux=aux->prox){
if(aux->valor==busca){
printf("Valor encontrado.\n");
return aux;
}
}
}
else
printf("\nTentou buscar de uma lista vazia");
return NULL;
}

lista* retira(lista* l, int valor){


lista* ant=NULL; /* ponteiro para elemento anterior */
lista* aux=l; /* ponteiro para percorrer a lista */
if(!lista_vazia(l)){
/* procura elemento na lista, guardando anterior */
while(aux!=NULL&&aux->valor!=valor){
ant=aux;
aux=aux->prox;
}
/* verifica se achou o elemento */
if(aux==NULL)
return l;
/* retira elemento */
if(ant==NULL)
l=aux->prox;
else
ant->prox=aux->prox;
free(aux);
return l;
} else{
printf("\nTentou remover de uma lista vazia");
return l;
}
}

struct no{
int valor;
struct no* prox;
};

typedef struct no lista;

/* função de criação de lista: retorna lista vazia*/


lista* cria(void);

lista* insere(lista* l, int i);

/* função vazia: retorno 1 se vazia ou 0 se não vazia*/


int lista_vazia(lista* l);

/* função que imprime elementos da lista*/


void imprime(lista* l);

/* função que busca um elemento na lista*/


lista* busca(lista* l, int busca);

lista* retira(lista* l, int valor);

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include "LE.h"

/* run this program using the console pauser or add your own getch, system("pause")
or input loop */

void main(int argc, char *argv[]) {


lista *l;
int valor, op;
l=cria();
while(op!=5){
system("cls");
printf("\nPrograma Para Manipulacao de Listas Ligadas");
printf("\n1 - Inserir na Lista");
printf("\n2 - Visualizar Lista");
printf("\n3 - Buscar Elemento na Lista");
printf("\n4 - Excluir Elemento");
printf("\n5 - Sair do Programa");
printf("\nEntre com a Opcao Desejada: ");
scanf("%i",&op);
switch(op)
{
case 1:
printf("entre valor \n");
scanf("%d", &valor);
l=insere(l, valor);
break;
case 2:
imprime(l);
break;
case 3:
printf("Entre com o valor que se deseja buscar: ");
scanf("%d",&valor);
busca(l,valor);
break;
case 4:
printf("Entre com o valor que deseja remover: ");
scanf("%i",&valor);
l=retira(l, valor);
break;
case 5:
exit(1);
}
system("pause");
}
free(l);
}

Você também pode gostar