#include #include #include "h.h" #include void readFromKeyboard(Element_t *item) { if (!item) { fprintf(stderr, "Nullpointer"); } else { printf("Songtitle:\n"); fgets(item->songtitle,255,stdin); *strrchr(item->songtitle, '\n')=0; printf("Interpreter:\n"); fgets(item->interpreter,255,stdin); *strrchr(item->interpreter, '\n')=0; } } Element_t *allocateElement() { Element_t *elem = malloc(sizeof(Element_t)); if (elem == 0) { fprintf(stderr, "Error:␣no␣memory␣available!\n"); return 0; } readFromKeyboard(elem); elem->next = 0; return elem; } Element_t *find_end(Element_t *list) { while (list->next != 0) list = list->next; return list; } Element_t *insertLast(Element_t *list) { Element_t *elem = allocateElement(); if (list != 0) { Element_t *end = find_end(list); end->next = elem; } else list = elem; return list; } void freeList(Element_t **list) { Element_t *list2=*list; Element_t *next; while (list2 != 0) { next = list2->next; free(list2); list2 = next; } *list=0; } void print_singleElement(Element_t *element) { printf("Ausgabe:"); printf("%s, %s\n", element->songtitle, element->interpreter); } void print_entireList(Element_t *list) { printf("Ausgabe alle:"); long i=1; while (list) { printf("%ld: %s, %s\n", i, list->songtitle, list->interpreter); list = list->next; i++; } printf("\n"); } void print_list_reverse(Element_t *list) { if (list->next) print_list_reverse(list->next); print_singleElement(list); } int main() { Element_t *list=0; long Eingabe=1; long Element; while (Eingabe!=0) { printf("1.Hinzufügen \n3.Ausgabe \n4.Ausgabe Element\n\n"); printf("Auswahl:"); scanf("%ld", &Eingabe); getchar(); switch(Eingabe) { case 1: list=insertLast(list); break; case 3: print_entireList(list); break; case 4: { printf("Welches Element?\n"); scanf("%ld", &Element); getchar(); long i; for (i=0; inext; } print_singleElement(list); } case 5: { printf("Umgekehrt:"); print_list_reverse(list); break; } } } printf("Hello world!\n"); return 0; }