abraços...
#include <stdlib.h>
#include <stdio.h>
typedef struct elemento
{
int i;
struct elemento *prox;
}nodo;
int insere_ordenado(nodo **l, int n)
{
nodo *aux,*aux2,*no;
no=(nodo*)malloc(sizeof(nodo));
no->i=n;
no->prox=NULL;
aux=*l;
if(*l==NULL)
{
*l=no;
return 1;
}
else
{
if(aux->i > n)
{
no->prox=*l;
*l=no;
return 1;
}
else
{
aux2=aux->prox;
while(aux2!=NULL)
{
if(aux->i<=n && n<=aux2->i)
{
no->prox=aux2;
aux->prox=no;
return 1;
}
aux2=aux2->prox;
aux=aux->prox;
}
aux->prox=no;
return 1;
}
}
}
int exclui(nodo ** l,int n)
{
nodo *aux,*aux2;
aux=*l;
if(*l==NULL)
{
printf("LISTA VAZIA\n");
return 0;
}
if(aux->i==n)//caso o primeiro da lista seja o escolhido
{
aux=*l;
*l=aux->prox;
free(aux);
return 1;
}
aux2=aux->prox;
while(aux2!=NULL)//passa pela lista toda procurando o n
{
if(aux2->i==n)
{
aux->prox=aux2->prox;
free(aux2);
return 1;
}
aux2=aux2->prox;
aux=aux->prox;
}
return 0;
}
void imprime(nodo **l)
{
nodo *aux;
if(*l==NULL)
{
printf("LISTA VAZIA\n");
}
else
{
aux=*l;
while(aux!=NULL)
{
printf("\t %d",aux->i);
aux=aux->prox;
}
printf("\n");
}
}
int main()
{
int escolha, digite;
nodo *lista=NULL;
do{
printf("DIGITE A OPÇÃO DESEJADA: \n 1-INSERIR NUMERO NA LISTA DE FORMA ORDENADA \n 2-EXCLUI NUMERO DIGITADO \n 3-IMPRIME \n 4-SAIR \n");
scanf("%d",&escolha);
switch (escolha)
{
case 1:printf("Digite um numero a ser colocado na lista \n");
scanf("%d",&digite);
if(insere_ordenado(&lista,digite)==1)
printf("inserido com sucesso!\n");
else
printf("falhou");
break;
case 2:printf("Digite um numero a ser excluido da lista \n");
scanf("%d",&digite);
if(exclui(&lista,digite)==1)
printf("EXCLUIDO COM SUCESSO!\n");
else
printf("FALHOU\n");
break;
case 3:imprime(&lista);
break;
case 4:printf("SAINDO\n");
system("pause");
exit(0);
default:printf("OPCAO INVALIDA\n");
break;
}
}while(escolha!=0);
return 0;
}
Nenhum comentário:
Postar um comentário