#include <iostream>
using namespace std;
//Die Struktur für die Listenelemente
struct listenelement
{
string daten;
listenelement *next;
};
//Eine Funktion zu Anhängen von Elementen an die Liste
listenelement *anhaengen (string datenneu, listenelement *listenende)
{
listenende->next = new(listenelement);
listenende = listenende->next;
listenende->daten = datenneu;
listenende->next = nullptr;
return listenende;
}
//Eine Funktion zum ausgeben aller Elemente
void ausgabe(listenelement *listenanfang)
{
//Ein lokaler Hilfszeiger, um in deer Liste wandern zu können
listenelement *hilfszeiger;
//den Hilfszeiger auf den Anfang der Liste setzen
hilfszeiger = listenanfang;
cout << hilfszeiger->daten << '\n';
while (hilfszeiger->next != nullptr)
{
hilfszeiger = hilfszeiger->next;
//Daten ausgeben
cout << hilfszeiger->daten << '\n';
}
}
//die Liste leeren und Speicher freigeben
void ende(listenelement *listenanfang)
{
//Ein lokaler Hilfszeiger, um in der Liste wandern zu können
listenelement *hilfszeiger;
//Solange noch Elemente in der Liste sind
while (listenanfang != nullptr)
{
hilfszeiger = listenanfang;
listenanfang = listenanfang->next;
//den Speicher für das herausgenommene Element freigeben
delete(hilfszeiger);
}
}
int main()
{
//ein Zeiger auf den Anfang der Liste setzen
listenelement *listenanfang, *listenende;
//das erste Element erzeugen
listenanfang = new(listenelement);
//Daten in das erste Element schreiben
listenanfang->next = nullptr;
listenanfang->daten = "Daten in Liste 1";
listenende = listenanfang;
//und jetzt weitere Elemente erzeugen
listenende = anhaengen("Daten in Liste 2", listenende);
listenende = anhaengen("Daten in Liste 3", listenende);
listenende = anhaengen("Daten in Liste 4", listenende);
listenende = anhaengen("Daten in Liste 5", listenende);
//die Liste ausgeben
ausgabe(listenanfang);
//die Liste wieder abbauen
ende(listenanfang);
return 0;
}