Advertisement
Matqux

kiszhgyak

Nov 24th, 2019
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.64 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3.  
  4. typedef struct listelem
  5. {
  6.     double data;
  7.     struct listelem *next;
  8. }listelem;
  9.  
  10. listelem *beszurElore(listelem *list, double data)
  11. {
  12.     listelem *uj = (listelem*)malloc(sizeof(listelem));
  13.     uj->next = list;
  14.     uj->data = data;
  15.     printf("beszurva\telore\t%pcimre\t%.1lf\n", uj, data);
  16.     return uj;
  17. }
  18.  
  19. beszurHatulra(listelem *list, double data)
  20. {
  21.     while(list->next != NULL)
  22.     {
  23.         list = list->next;
  24.     }
  25.  
  26.     listelem *uj = (listelem*)malloc(sizeof(listelem));
  27.     uj->next = NULL;
  28.     uj->data = data;
  29.  
  30.     list->next = uj;
  31.     printf("beszurva\thatra\t%pcimre\t%.1lf\n", uj, data);
  32.  
  33. }
  34.  
  35. listelem *readFile(FILE *file, listelem *list)
  36. {
  37.     double read;
  38.     while (fscanf(file, "%lf", &read) == 1)
  39.     {
  40.         if (read < 0)
  41.         {
  42.             list = beszurElore(list, read);
  43.             //printf("elore\n");
  44.         }
  45.         if (read > 0)
  46.         {
  47.             if (list == NULL)
  48.             {
  49.                 listelem *uj = (listelem*)malloc(sizeof(listelem));
  50.                 uj->next = NULL;
  51.                 uj->data = read;
  52.                 list = uj;
  53.             }
  54.             else
  55.             {
  56.                 beszurHatulra(list, read);
  57.             }
  58.             //printf("hatra\n");
  59.         }
  60.     }
  61.     return list;
  62. }
  63.  
  64. void kiirat(listelem *list)
  65. {
  66.     while (list != NULL) //addig megyünk, amig nem találunk null pointert
  67.     {
  68.         printf("%p\t%lf\n", list, list->data); //kiíratjuk a listaelem cimét és az ott található adatot
  69.         list = list->next; //a következő elemre ugrunk (a következő listaelem, az adott listaelem next adatmezőjével egyezik meg)
  70.     }
  71. }
  72.  
  73. int main()
  74. {
  75.     FILE *file;
  76.     file = fopen("data.txt","r");
  77.  
  78.     if (file == NULL)
  79.     {
  80.         printf("File read error");
  81.         return;
  82.     }
  83.  
  84.     listelem *list1 = NULL;
  85.     list1 = readFile(file, list1);
  86.     fclose(file);
  87.  
  88.     kiirat(list1);
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement