Publicidade cabeçário

segunda-feira, 4 de março de 2013

Estruturas de Dados - Exemplo Lista

Boa Tarde, Pessoal.

Aqui é o Alison.

Essa é minha primeira postagem no blog, então vamos lá !!!

Serei bem objetivo, estarei logo abaixo disponibilizando código comentado do exemplo de Lista conforme passado na última aula pelo professor.

Algo bem simples mesmo, porém caso tenham dúvidas podem me procurar.

#include< stdio.h >
#include< windows.h >
#include< conio.h >

/**
                    _ _ _
Let's Share   \/ \/ \/
                    * * *
Modelagem de Dados - Profº Jean
Fatec Bauru - Banco de Dados, 3º Semestre
Exemplo de Criação e Manipulação de uma Lista
Data: 28/02/2013

**/

struct no
{
   int nValor;
   no *pProximo;
}*pCabeca; //Declaração da estrutura pCabeca do tipo "no"

main()
{
   int nNum; //Declaração de variável "int"
   no *pNovo; //Declaração de variável ponteiro do tipo "no"
   no *pAux; //Declaração da variável ponteiro do tipo "no", será utilizada para auxiliar na manutenção da Lista.

   pCabeca = NULL; //Criação de uma Lista Vazia

   printf("Digite o primeiro valor: ");
   scanf("%d",&nNum); //Recebendo o valor via usuário, para ser utilizado na Lista

   pNovo = (no*) malloc(sizeof(no)); //Aloca a memória e cria um novo registro, onde pNovo armazena o endereço de memória
      //-------____-------
      //-------___-> Utiliza-se o "*" a direita, pois faz referência ao tipo de dado a ser alocada a memória (no caso ponteiro)

   pNovo->nValor = nNum; //Atribuindo o valor digitado para o campo nValor, pertencente a estrutura e posicionado onde pNovo está apontado
   pNovo->pProximo = NULL; //Atribuindo ao ponteiro pProximo o valor NULL. Fim da Lista (último nó)

   pCabeca = pNovo; //pCabeca aponta para pNovo, que consequentemente aponta para primeiro elemento. Utilizado apenas uma vez, sem alteração

   printf("\nDigite o segundo valor: ");
   scanf("%d",&nNum); //Recebendo novo valor via usuário, reaproveitando a variável

   pNovo = (no*) malloc(sizeof(no)); //Criação de novo registro, alocando a memória necessária

   pNovo->nValor = nNum; //Atribuindo o valor digitado
   pNovo->pProximo = NULL; //Atribuindo NULL, pois representa o fim da Lista

   pCabeca->pProximo = pNovo; //Ligação dos elementos da Lista, onde pProximo recebe o endereço de memória de pNovo. Ou seja, conseguimos
                                                   //acessar o valor digitado

   pAux = pCabeca; //Atribuir pCabeca a pAux, ou seja, o inicio da Lista.

   printf("\n\nPercorrendo a Lista e exibindo os valores \n\n ");
   while(pAux != NULL) //Percorre pAux, com o intuito de impressão do conteúdo de nValor
   {
      printf("\n%d ",pAux->nValor);
      pAux = pAux->pProximo; //Atribui o próximo endereço de memória da Lista, com o intuito de percorrer a estrutura;
   }
   getch();
}

Fiquem na paz... Até mais...
Atenciosamente, Alison Lemes.

2 comentários:

  1. Parmera ein kkkk \o~~ Negocio é bem complexo vai dar trabalho ;DDD

    ResponderExcluir
  2. rsrsr... boa Sr. Lemes Leite... porém no Linux, da alguns pauls, por causa da windows.h, no link abaixo mostra um exemplo feito em linux, pra quem também tiver interesse...
    http://ipfix.wordpress.com/2007/05/03/lista-encadeada-em-c/

    ResponderExcluir