Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- struct TListenKnoten
- {
- int data;
- TListenKnoten* next;
- TListenKnoten* prev;
- };
- 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;
- }
- void liste_ausgeben_rueckwaerts(TListenKnoten* anker)
- {
- if (anker == nullptr)
- {
- cout << "Leere Liste." << endl;
- }
- else
- {
- TListenKnoten *ptr = anker;
- while (ptr->next != nullptr)
- {
- ptr = ptr->next;
- }
- cout << "[ ";
- while (ptr->prev != nullptr)
- {
- cout << ptr->data << " , ";
- ptr = ptr->prev;
- }
- cout << ptr->data << " ]" << endl;
- }
- }
- void in_liste_einfuegen(TListenKnoten*& anker, int wert_neu, int vor_wert)
- {
- TListenKnoten* ptr = anker;
- TListenKnoten* prevp;
- int vorkommen = 0;
- if (anker == nullptr)
- {
- hinten_anfuegen(anker, wert_neu);
- }
- else
- {
- while (ptr->next != nullptr) //Geht Listeneintrรคge durch
- {
- if (ptr->data == vor_wert) // Wenn Wert Gefunden
- {
- if (ptr->prev == nullptr) // Wenn Der Eintrag an erster Stelle steht
- {
- TListenKnoten* neuer_eintrag = new TListenKnoten;
- neuer_eintrag->prev = nullptr;
- ptr->prev = neuer_eintrag;
- neuer_eintrag->next = ptr;
- neuer_eintrag->data = wert_neu;
- anker = neuer_eintrag;
- }
- else // Wenn Eintrag irgendwo in der Liste steht
- {
- TListenKnoten* neuer_eintrag = new TListenKnoten;
- prevp = ptr->prev;
- neuer_eintrag->prev = prevp;
- ptr->prev = neuer_eintrag;
- neuer_eintrag->next = ptr;
- prevp->next = neuer_eintrag;
- neuer_eintrag->data = wert_neu;
- anker = neuer_eintrag;
- }
- vorkommen++;
- break;
- }
- ptr = ptr->next;
- }
- if (vorkommen == 0)
- {
- hinten_anfuegen(anker, wert_neu);
- }
- }
- }
- void aus_liste_loeschen(TListenKnoten*& anker, int wert)
- {
- TListenKnoten* ptr;
- TListenKnoten* prevp;
- TListenKnoten* nextp;
- if (anker == nullptr)
- {
- }
- else
- {
- ptr = anker;
- while (ptr->next != nullptr)
- {
- if (ptr->data == wert)
- {
- if (ptr == anker)
- {
- nextp = ptr->next;
- nextp->prev = nullptr;
- anker = nextp;
- delete(ptr);
- break;
- }
- else
- {
- prevp = ptr->prev;
- nextp = ptr->next;
- prevp->next = nextp;
- nextp->prev = prevp;
- delete(ptr);
- break;
- }
- }
- ptr = ptr->next;
- }
- }
- }
- void liste_loeschen(TListenKnoten*& anker)
- {
- TListenKnoten* ptr;
- TListenKnoten* nextp;
- if (anker == nullptr)
- {
- }
- else
- {
- ptr = anker;
- while (ptr != nullptr)
- {
- nextp = ptr->next;
- delete(ptr);
- ptr = nextp;
- }
- anker = nullptr;
- }
- }
- 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);
- 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