Frage zu Listen / Doppelt verkettete Liste
-
Hallo versuche gerade die Listen zu kapieren einfach Verkettete und Doppelt verkettete.
Hab es jetzt verstanden im prinzip und mal eine einfach verkettete geschrieben in einem beispiel.
Bei einem Doppelt verketteten Liste gibt es jetzt noch ein zeiger auf das vorherige und ein end element nur komm ich damit nicht ganz zurecht.kann mir das vielleicht mal jemand erklären anhand meines beispiels ?
vielen dank schonmal
#include <iostream> #include <string> using namespace std; class Name { public: Name() {} Name(char *vn,char *nn){strcpy(vorname,vn); strcpy(nname,nn); } ~Name() {} void print() {cout << vorname << endl <<nname << endl;} private: char vorname[20]; char nname[20]; }; class Namelistelement :public Name { public: Namelistelement() {} ~Namelistelement() {} Namelistelement *next; Namelistelement *previous; Name value; }; class Namelist :public Namelistelement { public: Namelist() {first==NULL; end==NULL;} ~Namelist() {} // push int push(Name &obj) { Namelistelement *zeiger=new Namelistelement; zeiger->value=obj; zeiger->next=first; zeiger->previous=first; first=zeiger; end=zeiger; return 0; } //pop Name pop(void) { Name dummy; Namelistelement *zeiger=first; dummy=zeiger->value; first=zeiger->next; delete zeiger; dummy.print(); return *this; } private: Namelistelement *first; Namelistelement *end; }; int main() { Name objekt1("Nadine","Muster"); Name objekt2("Max","Mustermann"); Name objekt3("Jim","Morris"); Namelist liste; liste.push(objekt1); liste.push(objekt2); liste.push(objekt3); liste.pop(); liste.pop(); liste.pop(); }
-
Ich hab es mal versucht aber irgendwie gibts einen Fehler.
#include <iostream> #include <string> using namespace std; class Name { public: Name() {} Name(char *vn,char *nn){strcpy(vorname,vn); strcpy(nname,nn); } ~Name() {} void print() {cout << vorname << endl <<nname << endl;} private: char vorname[20]; char nname[20]; }; class Namelistelement :public Name { public: Namelistelement() {} ~Namelistelement() {} Namelistelement *next; Namelistelement *previous; Name value; }; class Namelist :public Namelistelement { public: Namelist() {first=NULL; end=NULL;} ~Namelist() { while( !empty() ) pop(); } // push int push(Name &obj) { Namelistelement *zeiger=new Namelistelement; zeiger->value=obj; zeiger->next=0; zeiger->previous=end; if (empty()) first=zeiger; else end->next=zeiger; end=zeiger; return 0;} //pop Name pop(void) { Name dummy; Namelistelement *zeiger=end; zeiger->value=dummy; end=end->previous; if (end=NULL) first=NULL; else end->next=NULL; delete zeiger; dummy.print(); return *this; } private: Namelistelement *first; Namelistelement *end; bool empty() {return first==0; } Namelist & operator = ( Namelist & ); }; int main() { Name objekt1("Nadine","Muster"); Name objekt2("Max","Mustermann"); Name objekt3("Jim","Morris"); Namelist liste; liste.push(objekt1); liste.push(objekt2); liste.push(objekt3); liste.pop(); liste.pop(); liste.pop(); }
-
std::string
-
habs jetzt hinbekommen