Sie sind auf Seite 1von 1

/* Es bezeichnet im Folgenden E ein (Eltern-)Array der Größe n, welches Knoten

speichert
* und Weg eine (anfangs leere) einfach verkettete Liste, die den Weg speichert
*/
void BreitensucheBaum(int v) {
Knoten *p; int w;
queue q; q.enqueue(v);
for (int k =0; k < n ; k++)
besucht[k] = 0;
E[k] = 0;
besucht[v] = 1;
/* Die Schlange q wird benutzt. v wird in die Schlange eingefuegt
und markiert. */
while (!q.empty ( ))
{
w = q. dequeue ( );
for (p = A_List[w]; p != 0; p = p->next)
if (!besucht[p->name])
{
E[p->wert] = w;
q.enque(p->name);
besucht[p->name] = 1;
}
}
}
stack s;
Knoten* i = c;
BreitensucheBaum(a);
while(E[i] != 0)
{
s.push(i);
i = E[i];
}
BreitensucheBaum(c);
i = b;
while(i != c)
{
s.push(i);
i = E[i];
}
while(!s.empty())
{
Weg.insert(s.pop());
Weg.next();
}