Lineare Liste



  • Hallo, kann mir jemand sagen was folgender Codeschnipsel aus folgendem Programm macht ?

    using namespace std;
    
    struct Element
    {
    	string name;		// person name
    	int nummer;			// personal number
    	Element *next;		// pointer to next element
    };
    
    void insertElement(Element *p, const string &name, int nummer)
    {
    	Element *q = new Element;
    	q->name = name;
    	q->nummer = nummer;
    	q->next = p->next;
    	p->next = q;
    }
    
    void deleteNextElement(Element *p)
    {
    	if (p->next != NULL)	// test if successor exists
    	{
    		Element* q = p->next;
    		p->next = q->next;	// update connection between elements
    		delete q;			// delete element (deallocate memory)
    	}
    }
    
    void printList(Element *p)
    {
    	while (p != NULL)
    	{
    		cout << p->nummer << ": " << p->name << endl;
    		p = p->next;
    	}
    }
    
    int main()
    {
    	// create a new element
    	Element *anfang = new Element;
    	anfang->name = "Peter Meier";
    	anfang->nummer = 230001;
    	anfang->next = NULL;
    
    	// create a second element and add it to the first one
    	Element *zweites = new Element;
    	zweites->name = "Gabi Schmidt";
    	zweites->nummer = 231127;
    	zweites->next = NULL;			// end of the list
    	anfang->next = zweites;			// connect second element with first one
    
    	// add a third element:
    	insertElement(anfang->next, "Ute Mueller",  230120);
    
    	// print list
    	printList(anfang);
    
    	// delete all elements from the list
    	while (anfang->next != NULL)
    	{
    		deleteNextElement(anfang);
    	}
    	delete anfang;
    
    	// wait for user input
    	cout << endl << endl << endl << "Bitte eine Taste druecken ...";
       	_getch();
    
    	// return error code 0 (no error)
    	return 0;
    }
    

    Es geht um folgenden:

    void printList(Element *p)
    {
    	while (p != NULL)
    	{
    		cout << p->nummer << ": " << p->name << endl;
    		p = p->next;
    	}
    }
    


  • Gibt die Liste aus.



  • Danke. Ich habe da mal noch eine letzte Frage.

    zweites->nummer = 231127; // Heißt das, zweites zeigt auf nummer, welche 231127 lautet?

    q->next = p->next; // q zeigt auf next und dieser ist der gleiche auf den p zeig ? ....

    Kanst du mir sagen wie ich diese zwei Codeschnipsel interpretieren kann ...


  • Mod

    zweites->nummer = 231127; // Heißt das, zweites zeigt auf nummer, welche 231127 lautet?

    Nein, zweites ist ein Zeiger auf eine Klasse, welche einen Member namens nummer hat, welchem der Wert 231127 zugewiesen wird.

    Der Pfeil-Operator ist eine Kurzschreibweise für (*zweites).nummer = ..;



  • Danke, ich hätte da noch eine letzte Frage. Manche Funktionen brauchen ja

    Element *p

    z.b. mit anfang->next. Kannst du mir nur noch das leicht erklären was das heißt ? Ist mit anfang->next gemeint das es ein Zeiger ist mit Member next? Und was heißt genau Member ? Und wozu das Element *p. Was heißt das genau? Das wärs dann.


  • Mod

    Nein, da habe ich keine Lust mehr. Hol dir ein Grundlagenbuch, wir bringen doch hier kein C++ bei!



  • fürchterliches pseudo-c++ im eröffnungspost... (womit) lernst du c++?



  • @Arcoth. Kannst du mir etwas empfehlen. Irgendeine Lektüre die C++ verständlich und einfach erklärt ? Bzw. einfacher als manch andere Lektüre? Ich finde leider nichts passendes ..

    @asfdlol. Ich habe bisher http://www.highscore.de genutzt, weil mir jemand es geraten hatte... Ich finde einfach nichts nützliches zu verketten Listen.



  • Das mit verketteten Listen kannst du dir wie Zettel/Karteikarten vorstellen, die du in der Wohnung verteilst.
    Auf den Karten schreibst du die Informationen und den Ort, wo die nächste Karte ist.

    Jetzt brauchst du noch zwei Zettel. Auf dem einen steht, wo die erste Karte liegt.
    Auf der anderen ist vermerkt, wo gerade die aktuelle Karte ist, mit der du arbeitest.
    (Das sind deine Zeiger)

    Ach ja, Member: http://dict.leo.org/?lp=ende&from=fx3&search=Member


Anmelden zum Antworten