SHARE
TWEET

Lista Ligada - C

yyajsayy Jul 26th, 2012 108 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*#########################################
  2. #      LISTAS SIMPLESMENTE LIGADAS        #
  3. #           @2012 by PEDRO TAVARES        #
  4. #      http://ptavares.blogspot.com       #
  5. #                                         #
  6. #########################################*/
  7.  
  8. /*bibliotecas*/
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13.  
  14. //definir a estrutura apropriada
  15.  
  16. typedef struct Pessoa{
  17.         char nome[50];
  18.         int idade;
  19.         struct Pessoa *next;
  20.  
  21. }PESSOA;
  22.  
  23.  
  24. //ler do ficheiro os valores e armazena-los em memoria
  25.  
  26. PESSOA *Ler(){
  27.  
  28.         PESSOA *L=NULL,*aux;
  29.         FILE *f;
  30.         char buff[50];
  31.         int idade;     
  32.  
  33.         //abrir o ficheiro de dados
  34.         f=fopen("dados.txt","r");
  35.  
  36.         //verificar se o ficheiro existe
  37.         if(f==NULL)
  38.                 return(NULL);
  39.        
  40.  
  41.        
  42.          while(fscanf (f, "%s\t%d", buff,&idade)!=EOF){
  43.                 //se a lista estiver vazia, inserimos na 1 posicao             
  44.                 if(L==NULL){
  45.                         //reservar memoria do tipo de estruct PESSOA
  46.                         L=(PESSOA*)malloc (1*sizeof(PESSOA));
  47.                         //enviar nome para o nodo criado em memoria    
  48.                         strcpy(L->nome,buff);
  49.                         //enviar idade para nodo criado em memoria
  50.                         L->idade=idade;
  51.                         //declarar "a seta" do proximo nodo a NULL (vazio)
  52.                         L->next=NULL;
  53.                         //a partir de agr o aux e' a nossa lista (L -> cabeca da lista)
  54.                         aux=L;
  55.                 }
  56.                 else {
  57.                
  58.                        
  59.                         aux->next=(PESSOA*)malloc (1*sizeof(PESSOA));
  60.                         aux=aux->next;
  61.                         strcpy(aux->nome,buff);
  62.                         aux->idade=idade;
  63.                         aux->next=NULL;
  64.                        
  65.                 }
  66.         }
  67.        
  68.         return(L);
  69. }
  70.  
  71.  
  72. //funcao para mostrar o que existe na lista
  73.  
  74. void Showlist(PESSOA *L){
  75.  
  76.         if(L==NULL){
  77.  
  78.                 printf("A Lista esta' vazia!\n");
  79.                 return;
  80.         }
  81.         else {
  82.                 //enquanto houver nodos..
  83.                 while(L!=NULL){
  84.                         printf("Nome: %s  =  idade %d\n",L->nome,L->idade);
  85.                         L=L->next;             
  86.                 }
  87.         }
  88.  
  89.         return;
  90. }
  91.  
  92.  
  93.  
  94. int main(){
  95.        
  96.         //declaracao da lista
  97.         PESSOA *L=NULL;
  98.        
  99.         //carregar dados para a lista
  100.         L=Ler();
  101.  
  102.         //mostrar dados da lista.
  103.         printf("::::::LISTAGEM::::::\n");      
  104.         Showlist(L);   
  105.         printf("::::::FIM LISTAGEM::::::\n");
  106.  
  107.         return (0);
  108. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top