<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Frage bzgl. zwei Funktionen]]></title><description><![CDATA[<p>Ich hoffe mich kann jemand <strong>bestätigen</strong> der etwas Ahnung hat.</p>
<p>Aufgabe Gegeben sei folgender Teil eines Stadtplans, in dem Hauseingänge (Großbuchstaben) über Gehwege (gestrichelte Linien) miteinander verbunden sind.</p>
<p>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:</p>
<pre><code>struct house
{
string owner;
sidewalk* firstNeighbour;
house* next;
};

struct sidewalk
{
house* destination;
bool cleared;
sidewalk* next;
};
</code></pre>
<p>Die Eigenschaft cleared der Gehwege gibt dabei an, ob dieser frei begehbar ist (z.B. von Schnee freigeräumt).</p>
<p>a) Adjazenzliste erstellen (Habe ich geschafft)<br />
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.</p>
<p>Musterlösung ist</p>
<pre><code>void AddHouseToList(house* first, house* newHouse)
{
while (first-&gt;next != NULL)
first = first-&gt;next;
first-&gt;next = newHouse;
}
</code></pre>
<p>Könnte man das nun auch mithilfe folgendem Code lösen (Müsste noch angepasst werden)?</p>
<pre><code>void AddEdge(Knoten *nodeSource, Knoten *nodeDest)
{
	// first edge?
	if (nodeSource-&gt;firstEdge == NULL)
	{
		nodeSource-&gt;firstEdge = CreateEdge(nodeDest);
	}
	else
	{
		// find last edge in the list
		Kante* lastEdge = FindLastEdge(nodeSource-&gt;firstEdge);
		lastEdge-&gt;nextEdge = CreateEdge(nodeDest);
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/323460/frage-bzgl-zwei-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 02:43:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323460.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Jan 2014 11:36:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage bzgl. zwei Funktionen on Fri, 31 Jan 2014 11:36:10 GMT]]></title><description><![CDATA[<p>Ich hoffe mich kann jemand <strong>bestätigen</strong> der etwas Ahnung hat.</p>
<p>Aufgabe Gegeben sei folgender Teil eines Stadtplans, in dem Hauseingänge (Großbuchstaben) über Gehwege (gestrichelte Linien) miteinander verbunden sind.</p>
<p>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:</p>
<pre><code>struct house
{
string owner;
sidewalk* firstNeighbour;
house* next;
};

struct sidewalk
{
house* destination;
bool cleared;
sidewalk* next;
};
</code></pre>
<p>Die Eigenschaft cleared der Gehwege gibt dabei an, ob dieser frei begehbar ist (z.B. von Schnee freigeräumt).</p>
<p>a) Adjazenzliste erstellen (Habe ich geschafft)<br />
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.</p>
<p>Musterlösung ist</p>
<pre><code>void AddHouseToList(house* first, house* newHouse)
{
while (first-&gt;next != NULL)
first = first-&gt;next;
first-&gt;next = newHouse;
}
</code></pre>
<p>Könnte man das nun auch mithilfe folgendem Code lösen (Müsste noch angepasst werden)?</p>
<pre><code>void AddEdge(Knoten *nodeSource, Knoten *nodeDest)
{
	// first edge?
	if (nodeSource-&gt;firstEdge == NULL)
	{
		nodeSource-&gt;firstEdge = CreateEdge(nodeDest);
	}
	else
	{
		// find last edge in the list
		Kante* lastEdge = FindLastEdge(nodeSource-&gt;firstEdge);
		lastEdge-&gt;nextEdge = CreateEdge(nodeDest);
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380771</guid><dc:creator><![CDATA[ZetaGamma]]></dc:creator><pubDate>Fri, 31 Jan 2014 11:36:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage bzgl. zwei Funktionen on Fri, 31 Jan 2014 13:14:31 GMT]]></title><description><![CDATA[<p>Vielleicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380801</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 31 Jan 2014 13:14:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage bzgl. zwei Funktionen on Fri, 31 Jan 2014 14:21:26 GMT]]></title><description><![CDATA[<p>Wie kommst du denn auf die Frage?</p>
<p>Und was genau fragst du eigentlich? Grundsätzlich ist die Antwort erstmal trivial JA, wenn man &quot;müsste angepasst werden&quot; weit genug auslegt... aber das willst du sicher nicht wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380818</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 31 Jan 2014 14:21:26 GMT</pubDate></item></channel></rss>