#include <stdio.h>
#include <stdlib.h>

/* Datenstrukturen f�r Liste (Zeiger auf Anfang und Ende)
 * und Listenelementen mit eigentlichen Werten und
 * Zeigern auf jeweils n�chstes Element */

typedef struct  listenelement_typ {
	float wert;
	listenelement_typ* naechstes;
};

typedef struct  listen_typ {
	listenelement_typ* erstes;
	listenelement_typ* letztes;
};

/* Funktionen zur Arbeit mit Listen */

void insert(listen_typ* l, float wert) 
{
	listenelement_typ* neu = (listenelement_typ*) malloc(sizeof(listenelement_typ));
	neu->wert = wert;
	neu->naechstes = NULL;
	if (l->erstes == NULL) {
		l->erstes = neu;
		l->letztes = neu;
	}
	else {
		l->letztes->naechstes = neu;
		l->letztes = neu;
	}
}

void ausgabe(listen_typ l)
{
	printf("Listenelemente: (");
	listenelement_typ* aktuell = l.erstes;
	while (aktuell != NULL) {
		printf("%g ",aktuell->wert);
		aktuell = aktuell->naechstes;
	}
	printf(") \n");
}

/* Hauptprogramm */

int main() 
{
	listen_typ l = {NULL,NULL};
	insert(&l,3.0);
	insert(&l,4.678);
	insert(&l,345.2);
	ausgabe(l);
	return 0;
}