yyajsayy

Lista Ligada - C

Jul 26th, 2012
200
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