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();
    
    }
    

  • Mod

    std::string



  • habs jetzt hinbekommen


Anmelden zum Antworten