Advertisement
Guest User

mojMinA (bez maina)

a guest
Nov 23rd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.43 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.     printf("Hello world!\n");
  25.     return 0;
  26. }
  27.  
  28.  
  29. void read_in(Element_t *item)
  30. {
  31.     printf("Name: ");
  32.     fgets(item->name, 256, stdin);
  33.  
  34.     printf("Interpreteur: ");
  35.     fgets(item->interpreteur, 256, stdin);
  36.     while(getchar() != '\n');
  37.  
  38. }
  39.  
  40. Element_t *allocate()
  41. {
  42.     Element_t *element = malloc(sizeof(Element_t));
  43.  
  44.     if(element == 0)
  45.     {
  46.         fprintf(stderr, "Error! No memory available!");
  47.         //return 0;
  48.     }
  49.     else
  50.     {
  51.         read_in(element);
  52.         element->prev = 0;
  53.         element->next = 0;
  54.     }
  55.     return element;
  56. }
  57.  
  58. Element_t *find_end(Element_t *list)
  59. {
  60.         while(list->next != 0)
  61.             list = list->next;
  62.         return list;
  63. }
  64.  
  65. Element_t *push_back(Element_t *list)
  66. {
  67.     Element_t *element = allocate();
  68.  
  69.     if (element == 0)
  70.     {
  71.         fprintf(stderr, "Error: No memory allocated for push_back!\n");
  72.         return list;
  73.     }
  74.  
  75.     if(list != 0)
  76.     {
  77.         Element_t *end = find_end(list);
  78.         element->prev = end;
  79.         end->next = element;
  80.     }
  81.     else
  82.     {
  83.         list = element;
  84.     }
  85.     return list;
  86. }
  87.  
  88. void cleanup_list(Element_t **list)
  89. {
  90.     Element_t *s = *list;
  91.     Element_t *t = s;
  92.  
  93.     while(t != 0)
  94.     {
  95.         t = t->next;
  96.         free(s);
  97.         s = t;
  98.     }
  99.     printf("\nMemory freed.\n");
  100. }
  101.  
  102. void print_element(Element_t *element)
  103. {
  104.     if(element != 0)
  105.     {
  106.     printf("\nName: %s", element->name);
  107.     printf("\nInterpreteur: %s", element->interpreteur);
  108.     }
  109.     else
  110.     printf("\nDie Stelle ist leer!");
  111. }
  112.  
  113. void print_list(Element_t *list)
  114. {
  115.     long i=0;
  116.     while(list != 0)
  117.     {
  118.         i++;
  119.         printf("Song %ld .", i);
  120.         print_element(list);
  121.         list = list->next;
  122.     }
  123.  
  124. }
  125.  
  126. void print_list_reverse(Element_t *list)
  127. {
  128.     if(list != 0)
  129.     {
  130.         print_list_reverse(list->next);
  131.         print_element(list);
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement