Advertisement
Guest User

mojMinA (sa mainom)

a guest
Nov 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Element_s
  5. {
  6.     char name[256];
  7.     //long duration; //Sekunden;
  8.     char interpreteur[256];
  9.     struct Element_s *next;
  10.     struct Element_s *prev;
  11. } Element_t;
  12.  
  13. void read_in(Element_t *item);
  14. Element_t *allocate();
  15. Element_t *push_back(Element_t *list);
  16. Element_t *find_end(Element_t *list);
  17. void cleanup_list(Element_t **list);
  18. void print_element(Element_t *element);
  19. void print_list(Element_t *list);
  20. void print_list_reverse(Element_t *list);
  21.  
  22. int main()
  23. {
  24.     //long i ;
  25.     Element_t *liste = 0;
  26.  
  27.     liste = push_back(liste);
  28.  
  29.     printf("\nListing: ");
  30.     print_list(liste);
  31.  
  32.     printf("\n\nUmgekehrte Reihenfolge: \n");
  33.     print_list_reverse(liste);
  34.  
  35.     return 0;
  36. }
  37.  
  38.  
  39. void read_in(Element_t *item)
  40. {
  41.     printf("Name: ");
  42.     fgets(item->name, 256, stdin);
  43.  
  44.     printf("Interpreteur: ");
  45.     fgets(item->interpreteur, 256, stdin);
  46.     //while(getchar() != '\n');
  47.  
  48. }
  49.  
  50. Element_t *allocate()
  51. {
  52.     Element_t *element = malloc(sizeof(Element_t));
  53.  
  54.     if(element == 0)
  55.     {
  56.         fprintf(stderr, "Error! No memory available!");
  57.         //return 0;
  58.     }
  59.     else
  60.     {
  61.         read_in(element);
  62.         element->prev = 0;
  63.         element->next = 0;
  64.     }
  65.     return element;
  66. }
  67.  
  68. Element_t *find_end(Element_t *list)
  69. {
  70.         while(list->next != 0)
  71.             list = list->next;
  72.         return list;
  73. }
  74.  
  75. Element_t *push_back(Element_t *list)
  76. {
  77.     Element_t *element = allocate();
  78.  
  79.     if (element == 0)
  80.     {
  81.         fprintf(stderr, "Error: No memory allocated for push_back!\n");
  82.         return list;
  83.     }
  84.  
  85.     if(list != 0)
  86.     {
  87.         Element_t *end = find_end(list);
  88.         element->prev = end;
  89.         end->next = element;
  90.     }
  91.     else
  92.     {
  93.         list = element;
  94.     }
  95.     return list;
  96. }
  97.  
  98. void cleanup_list(Element_t **list)
  99. {
  100.     Element_t *s = *list;
  101.     Element_t *t = s;
  102.  
  103.     while(t != 0)
  104.     {
  105.         t = t->next;
  106.         free(s);
  107.         s = t;
  108.     }
  109.     printf("\nMemory freed.\n");
  110. }
  111.  
  112. void print_element(Element_t *element)
  113. {
  114.     if(element != 0)
  115.     {
  116.     printf("\nName: %s", element->name);
  117.     printf("Interpreteur: %s", element->interpreteur);
  118.     }
  119.     else
  120.     printf("\nDie Stelle ist leer!");
  121. }
  122.  
  123. void print_list(Element_t *list)
  124. {
  125.     long i=0;
  126.     while(list != 0)
  127.     {
  128.         i++;
  129.         printf("\nSong %ld .", i);
  130.         print_element(list);
  131.         list = list->next;
  132.     }
  133.  
  134. }
  135.  
  136. void print_list_reverse(Element_t *list)
  137. {
  138.     if(list != 0)
  139.     {
  140.         print_list_reverse(list->next);
  141.         print_element(list);
  142.     }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement