Buscar

Lista_Encadeada

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <stdlib.h>
typedef int tipoelemento;
typedef struct No
{
 tipoelemento elemento;
 struct No *proximo;
}TipoNo;
void FazVazia(TipoNo **L)
{
 if(*L != NULL)
 {
 TipoNo *atual,*proximo;
 atual = *L;
 while(atual != NULL)
 {
 proximo = atual->proximo;
 free(atual);
 atual = proximo;
 } 
 *L = NULL;
 } 
 system("cls");
 printf(" LISTA VAZIA!\n");
 system("pause");
}
int inserir(TipoNo** L, int pos, tipoelemento E)
{
 TipoNo *NovoNo;
 
 NovoNo = (TipoNo *)malloc(sizeof(TipoNo)); 
 NovoNo->elemento = E;
 NovoNo->proximo = NULL;
 
 if(*L == NULL)
 {
 *L = NovoNo; 
 }
 else
 {
 if(pos < 0)
 {
 printf(" Impossivel inserir (POSICAO INVALIDA!)\n");
 }
 else
 {
 if(pos == 0)
 {
 NovoNo->proximo = *L;
 *L = NovoNo;
 }
 else
 {
 TipoNo *atual,*anterior;
 int cont;
 atual = *L;
 for(cont = 0;((cont<pos)&&(atual!=NULL));cont++)
 {
 anterior = atual;
 atual = anterior->proximo;
 } 
 if(atual != NULL)
 {
 NovoNo->proximo = atual;
 }
 else
 {
 NovoNo->proximo = NULL;
 } 
 anterior->proximo = NovoNo;
 }
 } 
 }
} 
 
 
int remover(TipoNo** L, int pos)
{
 if(*L == NULL)
 {
 system("cls");
 printf(" Impossivel excluir.(LISTA VAZIA!)\n"); 
 }
 else 
 {
 int i = 0;
 TipoNo *elementos;
 elementos = *L;
 while(elementos != NULL)
 {
 i++;
 elementos = elementos->proximo;
 }
 if((pos<0) || (pos>i))
 {
 system("cls");
 printf(" Impossivel excluir elemento. (POSICAO INVALIDA)\n");
 }
 else
 {
 if(pos == 0)
 {
 TipoNo *atual;
 atual = *L;
 *L = atual->proximo;
 free(atual);
 }
 else
 {
 int cont;
 TipoNo *atual,*anterior;
 atual = *L;
 for(cont = 0;((cont<pos) && (atual != NULL));cont++);
 {
 anterior = atual;
 atual = anterior->proximo;
 } 
 anterior->proximo = atual->proximo;
 free(atual);
 }
 }
 }
} 
 
void imprimir(TipoNo** L)
{
 if(*L == NULL)
 {
 system("cls");
 printf(" Impossivel imprimir. (LISTA VAZIA!)\n\n\n");
 }
 else
 {
 system("cls");
 TipoNo *atual;
 atual = *L;
 printf(" ");
 while(atual != NULL)
 {
 printf("[%d] ", atual->elemento);
 atual = atual->proximo;
 } 
 printf("\n\n\n");
 }
 system("pause");
} 
 
 
int main()
{
 TipoNo *lista = NULL;
 tipoelemento E;
 int pos,op;
 while(op != 5)
 {
 system("cls");
 printf(" **** MENU **** \n");
 printf("\n");
 printf(" 1 --> FAZ VAZIA\n");
 printf(" 2 --> INSERIR\n");
 printf(" 3 --> REMOVER\n");
 printf(" 4 --> IMPRIMIR\n");
 printf(" 5 --> SAIR\n");
 printf("\n\n Aguardando opcao...\n");
 printf(" ");
 scanf("%d",&op);
 switch(op)
 {
 case 1: FazVazia(&lista);
 break;
 case 2: printf(" Digite o elemento que deseja inserir:\n");
 scanf("%d", &E);
 printf(" Digite a posicao que deseja inserir:\n");
 scanf("%d", &pos);
 inserir(&lista,pos,E);
 break;
 case 3: printf(" Digite a posicao que deseja remover:\n");
 scanf("%d", &pos); 
 remover(&lista,pos);
 break;
 case 4: imprimir(&lista);
 break;
 case 5:
 {
 return 0; 
 }
 
 default:
 { 
 system("cls");
 printf(" Opcao invalida!\n\n\n");
 break;
 } 
 } 
 }
system("pause");
return 0; 
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais