Frage bzgl. zwei Funktionen



  • Ich hoffe mich kann jemand bestätigen der etwas Ahnung hat.

    Aufgabe Gegeben sei folgender Teil eines Stadtplans, in dem Hauseingänge (Großbuchstaben) über Gehwege (gestrichelte Linien) miteinander verbunden sind.

    Die Stadtverwaltung möchte einen Plan dieser Art als Graphen auffassen, wobei die Hauseingänge die Knoten und die Gehwege die Kanten darstellen. Der Graph soll als Adjazenzliste realisiert werden, welche folgende Datenstrukturen nutzt:

    struct house
    {
    string owner;
    sidewalk* firstNeighbour;
    house* next;
    };
    
    struct sidewalk
    {
    house* destination;
    bool cleared;
    sidewalk* next;
    };
    

    Die Eigenschaft cleared der Gehwege gibt dabei an, ob dieser frei begehbar ist (z.B. von Schnee freigeräumt).

    a) Adjazenzliste erstellen (Habe ich geschafft)
    b) Schreiben Sie die Funktion void AddHouseToList(house* first, house* newHouse), die an das Ende der momentanen Liste ein weiteres (bereits korrekt initialisiertes) Haus newHouse anfügt. first sei der Zeiger auf das erste Element der Liste. Es kann davon ausgegangen werden, dass first immer eine gültige Adresse enthält.

    Musterlösung ist

    void AddHouseToList(house* first, house* newHouse)
    {
    while (first->next != NULL)
    first = first->next;
    first->next = newHouse;
    }
    

    Könnte man das nun auch mithilfe folgendem Code lösen (Müsste noch angepasst werden)?

    void AddEdge(Knoten *nodeSource, Knoten *nodeDest)
    {
    	// first edge?
    	if (nodeSource->firstEdge == NULL)
    	{
    		nodeSource->firstEdge = CreateEdge(nodeDest);
    	}
    	else
    	{
    		// find last edge in the list
    		Kante* lastEdge = FindLastEdge(nodeSource->firstEdge);
    		lastEdge->nextEdge = CreateEdge(nodeDest);
    	}
    }
    


  • Vielleicht 🙂



  • Wie kommst du denn auf die Frage?

    Und was genau fragst du eigentlich? Grundsätzlich ist die Antwort erstmal trivial JA, wenn man "müsste angepasst werden" weit genug auslegt... aber das willst du sicher nicht wissen.


Anmelden zum Antworten