נשלח בתאריך: 18 May 2008 בשעה 18:39 | | IP רשוּם
|
|
|
|
שלום
יש לי גרף קשיר ואני צריכה לבנות גרף קשיר עם קשתות הפוכות.
יש לי פונקצית הוספה שמוסיפה קשת לגרף ניסיתי לשלוח לפונקציה זו את הקודקודים בסדר הפוך אבל משהו מסתבך לי....
הנה הפונקציה של ההוספה:
void Graph::Add(char n1, char n2)
{
int index=-1;
bool flag=false;
for(int i=0; i<20 && Arr[i]; i++)
{
if (Arr[i]->getName()==n1)index=i;
if (Arr[i]->getName()==n2)flag=true;
}
if(flag&&index!=-1)
{
Edge* tmp=new Edge(n2,NULL);
if (!Arr[index]->getFirst())
Arr[index]->setFirst(tmp);
else
Arr[index]->getFirst()->setNext(tmp);
}
else
cout<< "you have mistake\n";
}
וזו פונקציה לבנית גרף עם קשתות הפוכות:
void Graph::Transpose(Graph g, Graph >)
{
bool v1=false;
bool v2=false;
cout<< "Transpose\n";
for(int i=0; i<20&&g.Arr[i] ;i++)
{
if(g.Arr[i]->getFirst())
{
Edge* tmp= g.Arr[i]->getFirst();
while(tmp)
{
Add(tmp->getVertex()->getName(),g.Arr[i]->getName());
tmp=tmp->getNext();
}
}
}
}
תודה
|