Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vitorhls

estrutura de dados - lista encadeada

Recommended Posts

ESTE E O ALGORITMO Q ESTOU TRABALHANDO NELE! PRECISA DE AJUDAR PARA FAZER + 2 OPÇOES!

 

1- INCLUIR UM ELEMENTO EM QUALQUER POSIÇAO ENTRE O INICIO E O FIM DA LISTA.

2- EXCLUIR UM ELEMENTO EM ENTRE O INICIO E O FIM DA LISTA.

 

CODE
#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

 

struct no {

int num; // elemento a ser armazenado na lista

no *prox; // ponteiro para o proximo elemento

};

 

no *ini, *fim; // ponteiro para inicio e fim da lista

int n; // numero de elemento da lista

 

//////////////////////////////////////////////////

 

void insere_ini(no **prim,no **ult, int *nelem)

{

no *aux;

int valor;

 

printf("Digite o elemento a ser inserido: ");

scanf("%d",&valor);

if(ini==NULL)

{

*prim=(no *)malloc(sizeof(no));

(*prim)->num=valor;

(*prim)->prox=NULL;

*ult=*prim;

 

}

else

{

aux=(no*)malloc(sizeof(no));

aux->prox=*prim;

aux->num=valor;

*prim=aux;

}

(*nelem)++;

}

/////////////////////////////////////////////////

 

void insere_fim(no **prim,no **ult,int *nelem)

{

no *aux;

int valor;

printf("Digite o elmento a ser inserido");

scanf("%d",&valor);

if(ini==NULL)

{

*prim=(no *)malloc(sizeof(no));

(*prim)->num=valor;

(*prim)->prox=NULL;

*ult=*prim;

}

else

{

aux=(no *)malloc(sizeof(no));

(*ult)->prox=aux;

aux->num=valor;

aux->prox=NULL;

*ult=aux;

}

(*nelem)++;

}

 

////////////////////////////////////////////////////

 

void exclui_prim(no **prim, no **ult, int *nelem)

{

no *aux;

if(*prim==NULL)

{

printf("Lista vazia..");

getch();

}

else

{

if(*prim==*ult)

{

free(*prim);

*prim=NULL;

*ult=NULL;

}

else

{

aux=*prim;

*prim=(*prim)->prox;

free(aux);

}

(*nelem)--;

}

}

//////////////////////////////////////////////////

 

void exclui_ult(no **prim,no **ult, int *nelem)

{

no *aux;

no *noatual=*prim;

if(*ult==NULL)

{

printf("Lista vazia...");

getch();

}

else

 

{

if(*prim==*ult)

{

free(*ult);

free(*prim);

*ult=NULL;

*prim=NULL;

}

else

{

while(noatual->prox->prox!=NULL)

{

noatual=noatual->prox;

}

aux=*ult;

*ult=noatual;

(*ult)->prox=NULL;

free(aux);

}

(*nelem)--;

}

}

void listar(no *prim,int nelem)

{

int i=0;

if(prim==NULL)

{

printf("\n\nLISTA VAZIA...");

}

else

{

while(prim !=NULL)

{

i++;

printf("\n%d§ elemento: %d",i,prim->num);

prim=prim->prox;

}

printf("\n\nA LISTA POSSUI %d ELEMENTOS.",nelem);

}

}

 

///////////////////PROGRAMA PRINCIPAL////////////////

 

void main()

{

int opcao;

ini=NULL;fim=NULL,n=0;

do{

clrscr();

printf("[1]-INSERIR NO INICIO\n");

printf("[2]-INSERIR NO FINAL\n");

printf("[3]-EXCLUIR O PRIMEIRO\n");

printf("[4]-EXCLUIR O ULTIMO\n");

printf("[5]-LISTAR\n");

printf("[6]-SAIR \nDIGITE OPCAO: ");

scanf("%d",&opcao);

switch(opcao)

{

case 1: insere_ini(&ini,&fim,&n);

break;

 

case 2: insere_fim(&ini,&fim,&n);

break;

 

case 3: exclui_prim(&ini,&fim,&n);

break;

 

case 4: exclui_ult(&ini,&fim,&n);

break;

 

case 5: listar(ini,n);

getch();

}

} while(opcao!=6);

}

//////////////////////fim//////////////////

 

 

AJUDA AI PESSOAL!!!

 

 

FLW AI GALERA

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.