Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- struct TListenKnoten
- {
- TListenKnoten* prev;
- int data;
- TListenKnoten* next;
- };
- void liste_loeschen(TListenKnoten*& anker) {
- TListenKnoten* ptr = anker;
- TListenKnoten* prevptr = ptr;
- while (ptr != nullptr)
- {
- ptr = ptr->next;
- delete prevptr;
- prevptr = NULL;
- ptr->prev = nullptr;
- if (ptr->next==nullptr)
- {
- delete ptr;
- ptr = NULL;
- }
- }
- anker = nullptr;
- }
- void aus_liste_loeschen(TListenKnoten*& anker, int wert) {
- bool found = 0;
- TListenKnoten* ptr = anker;
- while (ptr!=nullptr && !found)
- {
- if (ptr->data==wert)
- {
- if (ptr->prev != nullptr)
- {
- ptr->prev->next= ptr->next;
- }
- else if (ptr->next != nullptr)
- {
- ptr->next->prev = nullptr;
- }
- if (ptr->next != nullptr)
- {
- ptr->next->prev = ptr->prev;
- }
- delete ptr;
- ptr = NULL;
- }
- else
- {
- ptr = ptr->next;
- }
- }
- }
- void in_liste_einfuegen(TListenKnoten*& anker, int wert_neu, int vor_wert) {
- TListenKnoten* neuer_eintrag = new TListenKnoten;
- bool found = 0;
- neuer_eintrag->data = wert_neu;
- if (anker == nullptr) {
- anker = neuer_eintrag;
- neuer_eintrag->prev = nullptr;
- neuer_eintrag->next = nullptr;
- }
- else
- {
- TListenKnoten* ptr = anker;
- while (ptr->next != nullptr)
- {
- if (ptr->data==vor_wert)
- {
- if (ptr->prev == nullptr)
- {
- neuer_eintrag->prev = nullptr;
- anker = neuer_eintrag;
- }
- else
- {
- neuer_eintrag->prev = ptr->prev;
- ptr->prev->next = neuer_eintrag;
- }
- found = 1;
- neuer_eintrag->next = ptr;
- ptr->prev = neuer_eintrag;
- }
- ptr = ptr->next;
- }
- if (ptr->next==nullptr && ptr->data == vor_wert)
- {
- found = 1;
- neuer_eintrag->prev = ptr->prev;
- ptr->prev->next = neuer_eintrag;
- neuer_eintrag->next = ptr;
- ptr->prev = neuer_eintrag;
- }
- if (found!=1)
- {
- neuer_eintrag->prev = ptr;
- neuer_eintrag->next = nullptr;
- ptr->next = neuer_eintrag;
- }
- }
- }
- void liste_ausgeben_rueckwaerts(TListenKnoten* anker) {
- string resultat = "";
- if (anker == nullptr) {
- string resultat = "Leere Liste";
- cout << resultat << endl;
- }
- else
- {
- TListenKnoten* ptr = anker;
- string resultat = "[";
- while (ptr->next != nullptr)
- {
- ptr = ptr->next;
- }
- do
- {
- resultat += std::to_string(ptr->data);
- if (ptr->prev != nullptr) resultat += " , ";
- else resultat += " ";
- ptr = ptr->prev;
- } while (ptr != nullptr);
- resultat += "]";
- cout << resultat << endl;
- }
- }
- void hinten_anfuegen(TListenKnoten*& anker, const int wert)
- {
- TListenKnoten* neuer_eintrag = new TListenKnoten;
- neuer_eintrag->data = wert;
- neuer_eintrag->next = nullptr;
- if (anker == nullptr) {
- anker = neuer_eintrag;
- neuer_eintrag->prev = nullptr;
- }
- else
- {
- TListenKnoten* ptr = anker;
- while (ptr->next != nullptr)
- {
- ptr = ptr->next;
- }
- neuer_eintrag->prev = ptr;
- ptr->next = neuer_eintrag;
- }
- }
- string liste_als_string(TListenKnoten* anker)
- {
- string resultat = "";
- if (anker == nullptr)
- return "Leere Liste.";
- else
- {
- resultat += "[ ";
- TListenKnoten* ptr = anker;
- do
- {
- resultat += std::to_string(ptr->data);
- if (ptr->next != nullptr) resultat += " , ";
- else resultat += " ";
- ptr = ptr->next;
- } while (ptr != nullptr);
- resultat += "]";
- }
- return resultat;
- }
- void liste_ausgeben(TListenKnoten* anker)
- {
- cout << liste_als_string(anker) << endl;
- }
- int main()
- {
- const int laenge = 10;
- TListenKnoten* anker = nullptr;
- liste_ausgeben(anker);
- liste_ausgeben_rueckwaerts(anker);
- liste_loeschen(anker);
- hinten_anfuegen(anker, 77);
- hinten_anfuegen(anker, 88);
- hinten_anfuegen(anker, 99);
- liste_ausgeben(anker);
- liste_ausgeben_rueckwaerts(anker);
- liste_loeschen(anker); // war: aus_liste_loeschen(anker, 99);
- liste_ausgeben(anker);
- liste_ausgeben_rueckwaerts(anker);
- for (int i = 0; i < laenge; i++)
- in_liste_einfuegen(anker, i * i, 9999);
- liste_ausgeben(anker);
- liste_ausgeben_rueckwaerts(anker);
- in_liste_einfuegen(anker, -1, 0);
- in_liste_einfuegen(anker, 24, 25);
- in_liste_einfuegen(anker, 80, 81);
- in_liste_einfuegen(anker, 99, 9999);
- liste_ausgeben(anker);
- liste_ausgeben_rueckwaerts(anker);
- aus_liste_loeschen(anker, 24);
- aus_liste_loeschen(anker, 80);
- liste_ausgeben(anker);
- liste_ausgeben_rueckwaerts(anker);
- liste_loeschen(anker);
- liste_ausgeben(anker);
- liste_ausgeben_rueckwaerts(anker);
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement