Pra você que passou o fds carregando pedra fonte da imagem|: culturadetravesseiro.blogspot.com |
#include<stdio.h>
#include<windows.h>
#include<conio.h>
struct no
{
int nValor;
no *pProximo;
}*pCabeca;
void CriarListaVazia(){
pCabeca = NULL;
printf("\n\tA lista foi criada com sucesso!");
}// fim CriarListaVazia
void ExiberPrimeiroElemento(){
printf("\n\t O primeiro elemento e %d",pCabeca->nValor);
}//fim ExiberPrimeiroElemento
void DeletarPrimeiro(){
no *pAux;
pAux = pCabeca;
pCabeca = pCabeca->pProximo;
free(pAux);
printf("\n\nElemento deletado no inicio com sucesso!! \n\n ");
}//fim DeletarPrimeiro
void DeletarUltimo(){
no *pAux,*pUltimo;
pAux = pCabeca;
pUltimo = pCabeca;
while(pAux->pProximo!= NULL){
pUltimo = pAux;
pAux = pAux->pProximo;
}
pUltimo->pProximo = NULL;
free(pAux);
printf("\n\nElemento inserido no final com sucesso!! \n\n ");
}//fim DeletarUltimo
void DeletarEscolha(){
no *pAux,*pEscolha;
int iCont=1,iNo;
printf("\n\t Digite o NO a ser deletado\n\t");
scanf("%d",&iNo);
pAux = pCabeca;
if(iNo == 1){
DeletarPrimeiro();
}else{
while(iCont != iNo){
pEscolha = pAux;
pAux = pAux->pProximo;
iCont++;
}
if(iCont == iNo){
free(pAux);
}
pEscolha -> pProximo = pAux ->pProximo;
}
}//fim DeletarEscolha
void ExiberUltimoElemento(){
no *pAux;
pAux = pCabeca;
while(pAux->pProximo != NULL)
{
pAux = pAux->pProximo;
}
printf("\n\t O ultimo elemento e %d",pAux->nValor);
}//fim ExiberUltimoElemento
void ExibirTamanho(){
no *pAux;
int iCont=1;
pAux = pCabeca;
while(pAux->pProximo != NULL)
{
pAux = pAux->pProximo;
iCont++;
}
printf("\n\t A lista possui %d elementos",iCont);
}//fim ExibirTamanho
void InserirInicio(){
no *pNovo;
int nV;
printf("\n\t Digite o valor: ");
scanf("%d",&nV);
pNovo = (no*) malloc(sizeof(no));
pNovo -> nValor = nV;
if(pCabeca == NULL){
pCabeca = pNovo;
pNovo->pProximo = NULL;
}else{
pNovo->pProximo = pCabeca;
pCabeca=pNovo;
}
printf("\n\nElemento inserido no comeco com sucesso!! \n\n ");
}//fim InserirInicio
void InserirFinal(){
no *pNovo, *pAux;
int nV;
printf("\n\t Digite o valor: ");
scanf("%d",&nV);
pNovo = (no*) malloc(sizeof(no));
pNovo->nValor = nV;
pNovo->pProximo = NULL;
if(pCabeca == NULL){
pCabeca = pNovo;
}else{
pAux = pCabeca;
while(pAux->pProximo != NULL){
pAux = pAux->pProximo;
}//fim while
pAux->pProximo = pNovo;
}//fim if
printf("\n\nElemento inserido no final com sucesso!! \n\n ");
}//fim InserirFinal
void Imprime(){
no *pAux;
int nCont=0;
pAux = pCabeca;
printf("\n\nPercorrendo a Lista e exibindo os valores \n\n ");
while(pAux != NULL){
nCont++;
printf("\n elemento %d : %d",nCont,pAux->nValor);
pAux = pAux->pProximo;
}//fim while
}// fim Imprime
void ListaVazia(){
if(pCabeca == NULL) printf("\n\t A lista esta vazia no momento!!");
else printf("\n\t A lista ja possue elementos!!");
}// fim ListaVazia
main(){
int nOpc;
do{
printf("----------------------- Menu --------------------------------");
printf("\n\n\t1 - Criar Lista");
printf("\n\t2 - Inserir no Inicio da Lista");
printf("\n\t3 - Inserir no final da Lista");
printf("\n\t4 - Exibir se a lista esta vazia");
printf("\n\t5 - Exibir os dados do primeiro elemento");
printf("\n\t6 - Exibir os dados do último elemento");
printf("\n\t7 - Exibir todos os valores da lista");
printf("\n\t8 - Exibir o tamanho da lista");
printf("\n\t9 - Eliminar o primeiro elemento");
printf("\n\t10 - Eliminar o ultimo elemento");
printf("\n\t11 - Eliminar o NO que possua o codigo digitado pelo usuário");
printf("\n\t12 - Inverte a Lista");
printf("\n\t0 - Sair");
printf("\n\nDigite a opcao desejada: ");
scanf("%d",&nOpc);
switch (nOpc){
case 0:
printf("\n\nObrigado por utilizar o programa\n\n Pressione ENTER para sair...");
break;
case 1:
CriarListaVazia();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 2:
InserirInicio();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 3:
InserirFinal();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 4:
ListaVazia();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 5:
ExiberPrimeiroElemento();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 6:
ExiberUltimoElemento();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 7:
Imprime();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 8:
ExibirTamanho();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 9:
DeletarPrimeiro();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 10:
DeletarUltimo();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 11:
DeletarEscolha();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
default:
printf("\n\nOpcao Invalida \n");
break;
} // fim switch
getch();
system("cls");
}while(nOpc != 0);
}//fim main
Aqui nosso main com o menu
Exemplo do Menu de Lista Dinâmica fonte da imagem: bdfatec.blogspot.com.br |
para saber mais sobre estrutura de dados:
Ótimo post chuck, estou pensando em fazer um post também, de como fazer uma lista encadeada, porém no linux, já que não tem a windows.h, rsrsrsr... Abraços
ResponderExcluirDemorou... em Linux o negocio é mais embaixo pelo que você tava falando... kkkk tenso demais chessus! Manda bala manolo é nois! abraço vlw
Excluirlista do satanas kkkkkkkkkkk
ResponderExcluirÉ preto se achou o que que era doce? HIAEOIOEIAOHIAEOAEOHAOEI....
Excluirnooossaaa, muito obrigada, se nao fosse vc ia tirar zero na prova, estava morrendo de medo kkkkk. Valeu mesmo.
ResponderExcluirÉ nois... agora estuda o código é seja feliz xDDD
Excluir