#include <stdio.h>
#include <stdlib.h>
#include "h.h"
#include <string.h>
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; i<Element-1; i++)
{
list = list->next;
}
print_singleElement(list);
}
case 5:
{
printf("Umgekehrt:");
print_list_reverse(list);
break;
}
}
}
printf("Hello world!\n");
return 0;
}