Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 04:35   #1
Loka
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 15
По умолчанию откомментировать программу

Откомментируйте программу,пожалуйста
построчно


#include "stdafx.h"
#include "iostream"

using namespace std;

// Основные переменные
int Nn;
int S[10];
int F[10];
int FIn[20];
char Color[10];

// Структура графа
struct Node
{
int No;
Node* Next;
}
*Beg, *Np, *Np1, *Temp, *Temp1, *Temp2;

Node *Graph[50];
Node *Grapht[50];

// Создаем структуру
Node* Create(int N)
{
Np = new Node;
Np->No = N;
Np->Next = NULL;
return Np;
}

// Вставляем вершины
void Insert(Node* Np)
{
if (Beg == NULL)
Beg = Np;
else
{
Temp = Beg;
Beg = Np;
Np->Next = Temp;
}
}

// Выводим граф
void Display(Node* Np)
{
while(Np != NULL)
{
cout<<Np->No<<"-";
Np = Np->Next;
}
}

// Удаляем вершины
void Del(Node* Np, Node* Np1)
{
Np->Next = Np1->Next;
delete Np1;
}

// Проверяем или мы уже здесь были
void Visit(int J, Node* A[])
{
Color[J] = 'g';
Temp = A[J];
while(Temp != NULL)
{
int V = Temp->No;
if(Color[V] == 'w')
{
Visit(V, A);
Temp = A[J]->Next;
}
else
Temp = Temp->Next;
}
cout<<J<<",";
Color[J] = 'b';
}

// Деревья, которые выбираются в результате, представляют собой сильные компоненты
void DFS(int N, Node* A[])
{
for(int J = 1; J <= N; J++)
Color[J] = 'w';
for(int I = 1; I <= N; I++)
{
if(Color[I] == 'w')
Visit(I, A);
cout<<"\n";
}
}

// Инвертируем ребра исходного орграфа
void Tran(int N)
{
for(int I = 1; I <= N; I++)
{
Color[I] = 'w';
Np = Create(I);
Grapht[I] = Np;
}
for(int J = 1; J <= N; J++)
{
Temp = Graph[J]->Next;
while (Temp != NULL)
{
int X = Temp->No;
Np = Create(J);
Temp1 = Grapht[X];
Np->Next = Temp1->Next;
Temp1->Next = Np;
Temp = Temp->Next;
}
}
}

// Основная процедура алгоритма
void SCC(int N)
{
int K;
DFS(N, Graph);
for(K = 1; K <= N; K++)
{
Color[K] = 'w';
int T = F[K];
FIn[T] = K;
}
Tran(N);
for(K = (2 * N); K >= 1; K--)
if((FIn[K] != NULL) && (Color[FIn[K]]) == 'w')
{
int Z = FIn[K];
Visit(Z, Grapht);
cout<<"\n";
}
}

// Создаем сам граф
void CreateG(int N)
{
int I = 1;
char Ch = 'y';
int Sd;
Nn = 0;
int X = 0;
while(I <= N)
{
cout<<"Enter Size Of Nodes Adjacent To "<<I<<" : ";
cin>>Sd;
while(X < Sd)
{
cout<<"Enter The Adjacent Node Of Node # "<<I<<" : ";
cin>>Nn;
Create(Nn);
Insert(Np);
X++;
}
Graph[I] = Beg;
Beg = NULL;
I++;
X = 0;
}
}

// Основная программа
int main()
{
int N;
cout<<"Enter The Size Of Nodes : ";
cin>>N;
CreateG(N);
cout<<"\nResult :\n";
SCC(N);
return 0;
}
Loka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
откомментировать программы Loka Помощь студентам 0 08.12.2010 05:19
Написать программу. Sania92 Паскаль, Turbo Pascal, PascalABC.NET 0 24.05.2010 00:17
Разработать программу! BaHeK Общие вопросы .NET 3 23.03.2010 15:24
Написал программу, помогите натянуть Шейдеры или как нибудь модифицировать программу WMLite Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2009 13:57