return resh - возвращает счётчик типа char, который равен 1, если все элементы массива-доступных-путей-для-подмножества равны 1 и равен 0, в противном случае. resh { 0 ; 1 }
void Perebor(int * & buf,int q,int number,int i) – функция изменяющая массив buf – массив-вариант-вершин на следующий вариант. Возвращает массив buf неявно. int *buf – указатель на массив-вариант-вершин. Его элементы – номера вершин графа типа int; int q – позиция в массиве buf, которую нужно изменить; int number - количество вершин в графе. Number [0;+ ); int i – количество элементов в массиве buf.
void Output(int *buf,FILE *out,list *head,int i) – функция вывода в файл имён вершин, которые записаны в массиве buf. int *buf – указатель на массив-вариант-вершин. Его элементы – номера вершин графа типа int; FILE *out - указатель на поток – исходящий файл”; list *head – указатель на список с элементами – наименование вершины графа; int i – количество элементов в массиве buf.
char Zadacha(char **matrix2,int i,int number,list *head,FILE *out) – функция анализа матрицы-путей. Берёт вариант взятия вершин из Графа из функции Perebor и проверяет этот вариант в функции Program. Если Program возвращает resh=1, то выводит этот вариант с помощью функции Output.
return resh - возвращает счётчик типа char, который равен 0, если решение не найдено и равен 1, если решение найдено. resh { 0 ; 1 }
6. Текст программы
#include<stdio.h>
#include<stdlib.h>
struct name { name *next; //определение структур
char sim; };
struct list { list *next;
name *sim; };
struct stack { char sim;
stack *next; };
typedef stack stack;
int InputVer (list *head, FILE *in) // функция ввода названий вершин графа в список
{ int number=0,i,k,t; list *p; name *m; char g;
p=head;
while (g!='\n' && !feof(in) ) // ввод названия вершин пока не конец файла и
{ p->next=new list; //не конец строки
p=p->next;
m=p->sim;
fscanf (in,"%c",&g); //ввод названия вершины посимвольно в
while (g!=',' && g!='\n' && !feof(in) ) // динамический список
{ m->next=new name;
m=m->next;
m->sim=g;
fscanf (in,"%c",&g);
}
m->next=NULL;
m=p->sim;
number++; //увеличиваем счётчик количества вершин графа
}
p->next=NULL;
return number; //возвращаем количество переменных графа
}
int Search (list *head, name *beg) // функция поиска слова, находящегося
{ char v=1,place=0; list *p; name *k,*q; // посимвольно в списке в списке с
p=head->next; // элементами – словами, находящимися
q=p->sim->next; // посимвольно в списке.
k=beg->next;
while (!id) // Пока не найдено идентичное слово
{ if (q->sim!=k->sim) //если буквы не равны, то счётчик порядкового номера
{ place++; // вершины увеличиваем на единицу и переходим к
p=p->next; // следующему слову в списке. Указатель, передвигающийся
q=p->sim->next; // по списку со словом, которое ищем, делаем указывающим на
k=beg->next; // начало списка
}
else //иначе, если конец обоих слов, то найдено идентичное слово.
{ if (q->next==NULL && k->next==NULL) id=1;
q=q->next; // Передвигаем указатели в словах на следующую букву
k=k->next;
}
}
return place; // возвращаем порядковый номер вершины
}
void InputDug (list *head, FILE *in, char **matrix1) // функция ввода дуг в матрицу-дуг
{ int i; char g,l,v,place1,place2; name *m,*beg;
while (!feof(in)) // считываем дугу, пока не конец файла
{ beg=new name;
m=beg;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.