///////
void DeleteY (Spisok ** Z, int n)
{int i = 0;
Spisok * rex;
for (i = 0; i
rex = Z [i];
while (rex! = NULL) {Z [i] = rex-> next; delete rex; rex = Z [i];}
delete Z [i];
}
delete [] Z;
}
////////////////////////////////////////////////////////////////////////////////
Spisok ** RaznostY (int n, int n1, Array * X, Spisok ** Y)
{/ * Розрахунок різниці графів Z = X-Y
Z, Y - пов'язаному поданні, X - в послідовному.
n - кол-во вершин графа, n1 - кількість дуг графа */
int i, j;
Spisok ** Z = new Spisok * [n] ;//виділення пам'яті для графа у зв'язаному поданні
for (I = 0; i
// cout <<'';
for (i = 0; i
for (j = 0; j
if (X [i]. I == j) {//cout <<" bд";// якщо збіглися виходіщіе вершини ...
Spisok * Max = Y [j];// max дивиться на початок списку Y [j]
int Flag = 0;// Просто Флаговая мінлива
while (max! = NULL) {//Перевіряємо на збіги "вхідні" вершини
if (X [i]. J == max-> index) Flag = 1 ;//якщо знайшли повторення, то вихід
max = max-> next;// пересуваємося на наступний елемент списку
}
if (Flag == 0) {//якщо небуло збігів вершин, то ... все зрозуміло:
Spisok * End = Z [j], * beg = Z [j], * pred = Z [j];
while (End! = NULL) {pred = end; end = end -> next;}
end = Pred;
if ((beg == NULL) && (end == NULL)) Z [j] = beg = end = new (Spisok);
else end = end -> next = new (Spisok);
end -> Next = NULL;
end -> Index = X [i]. J;
}
// cout <<" b |";
}
// cout <<" b ";
}
// cout <<" b B ";
DeleteY (Y, n);// Вбивство пов'язаного графа Ігрика! p> return Z;
}
void Demo (void)
/* Х - у послідовному поданні
У - в пов'язаному поданні */
{int n = 4, N2;
clrscr ();// Очищення екрана
CursorOff ();
cout <<" t tДемонстрація працездатності програми. "<
char st [] = "GrapH.txt";// ім'я генерується файлу
cout <<" t tІмя файла з даними завдання:" <
WriteFile (st, n);// Генерація файлу з н вершинами
n = HowMuch (st);// підрахунок числа вершин графів
int N1 = Number (N2, st);// підрахунок числа дуг
Array * X = new Array [N1];// виділення пам'яті для графа в последоват поданні p>
X = ReadFileX (X, st);// читання графа в послідовному поданні
cout <<" N X в послідовному";
print3 (X, N1, n);// вивід графа в послідовному поданні
Spisok ** Y = new Sp...