#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
typedef struct listnode{
 
	int data;
	listnode *next;
};
 
listnode *head=NULL;
 
void vorneeinhaengen(int n)
{
	for(int i=0;i<n;i++)
	{
		listnode *node = new listnode;	//Anlegen eines neuen Knotens
	    cout << "Wert eingeben: ";
		cin >> node->data;				//Daten in den Knoten übernehmen
		node->next=head;				//Zeiger node->next zeigt auf ersten Knoten
		head=node;						//Listenkopf ist der neue Kneten
	}
 
}
 
 
void listeausgeben()
{
	listnode *h=NULL;		//Hilfszeiger
	h=head;					//der auf den Kopf der Liste zeigt.
 
	while (h!=NULL)		//Solange Hilfszeiger nicht auf NULL zeig
	{
		cout << h->data << " -> ";
		h=h->next;
	}
}
 
int anzahlelemente()
{
	int anzahl=0;
	listnode *h=NULL;
	h=head;
	while(h!=NULL)
	{
		anzahl++;
		h=h->next;
	}
	return anzahl;
}
 
int main(int argc, char** argv) {
 
   int anzahl=0;
   cout << "Einfach verkettete Liste\n";
   cout << "Geben Sie an, wie viele Elemente Sie einhaengen wollen: ";
   cin >> anzahl;
   vorneeinhaengen(anzahl);
   cout << "Ausgabe der Liste\n";
   listeausgeben();
   cout << "Die Anzahl aller Elemente betraegt: " << anzahlelemente();
 
	return 0;
 
 
}