dynamische elemente



  • #include <stdio.h>
    #include <iostream>
    #include <conio.h>
    #include <iomanip>
    #include <string.h>
    
    using namespace std;
    
    class Telefon
    {
    private:
    	char Name[20];
    
    	char Vorname[20];
    
    	char Nummer[20];
    
    	Telefon* next;
    
    public:
    	Telefon();
    	void einfuegen();
    	void einfuegen_pos();
    	void anzeigen();
    	void loeschen();
    	void loeschen_pos();
    	void clear();
    
    /*	Telefon(void){
    		next=0;
    	}*/
    };
    
    Telefon::Telefon ()
    {
       next = 0;                   
    }
    
    void Telefon::einfuegen()
    {
    	cout << next << endl;	
    
    	Telefon *next_Element = new Telefon;                                  
    											     (*next_Element).next = next;		 
    
    	next = next_Element;				
    
    	cout << endl << "Vorname: ";			
    	cin >> next_Element->Vorname;							    
    
    	cout << endl << "Nachname: ";
    	cin >> next_Element->Name;									
    	cout << endl << "Nummer: ";
    	cin >> next_Element->Nummer;								
    
    }
    

    kann mir einer genauer erklähren was die 3 zeilen bedeuten, bin bissi verwirrt da alles gleichgesetzt wird?

    Telefon *next_Element = new Telefon;
    (*next_Element).next = next;
    next = next_Element;



  • Das ist ein Teil einer Verketteten Liste.
    Bei diesen 3 Zeilen wird ein Element zwischen 2 eingefügt (nämlich zwischen this und dem darauf folgendem Element (this->next)).



  • snoopy9134 schrieb:

    Telefon *next_Element = new Telefon;
    

    Einem Zeiger auf Telefon namens next_Element wird die Adresse eines neu angelegten Telefons zugewiesen.

    snoopy9134 schrieb:

    [cpp](*next_Element).next = next;
    // entspricht: next_Element->next = next;

    Der Zeiger next_Element wird dereferenziert und der Membervariable next des "bezeigten" Telefons wird die lokale Variable next zugewiesen.

    snoopy9134 schrieb:

    [cpp]next = next_Element;[/cpp]

    Der lokalen Variable next wird next_Element (also der Zeiger auf ein Telefon) zugewiesen.

    Das ganze erstellt dir eine einfach verkettete Liste von Telefonen.

    Btw, stdio.h und string.h gehören in kein C++-Programm! Außerdem ist using namespace in einem Header böse.

    /edit: Zu spät ...
    @snoopy: Schau dir mal etwas über das EVA-Prinzip an!



  • Noch ne kleine Anmerkung:

    Ich würde hier den Pfeiloperator verwenden:

    (*next_Element).next = next;
    

    ➡

    next_Element->next = next;
    

    ist übersichtlicher 😉



  • nab ma die adresse von "new Telefon"
    und gleich daraufhin von "*next_Element" anzeigen lassen, und ich bekomme zwei underschiedliche adressen raus. ich dachte eigentlich dass der Zeiger next_Element auf die adresse von newTelefon zeigt und die müssten übereinstimmen, tun sie aber net.
    bin n bissi verwirrt .


Anmelden zum Antworten