Язык программирования ассемблер. Язык программирования ассемблер - 126 r r[i] = -1 c Учебный сайт
Учебные материалы


Язык программирования ассемблер. Язык программирования ассемблер - 126



Параметр состояния c фиксирует два результата. Пусть k – текущая вершина. Если c = 1, то продолжается поиск новых вершин, которые являются смежными для k. Если c = 0, то поиск новых вершин, которые являются смежными для вершины k, завершен. Это значит, что либо нашли новую вершину v, смежную k, либо, перебрав все вершины, смежные с k, новых не нашли.



Обход графа в глубину от начального узла. Нерекурсивная программа. Граф задан матрицей смежности. Номер узла k графа связан c индексом i по формуле i = k – 1. Матрица смежности заносится в файл t1.dat. Число вершин в графе определяется директивой const n = 13, m = 13;

  • Обход графа в глубину от начального узла. Нерекурсивная программа. Граф задан матрицей смежности. Номер узла k графа связан c индексом i по формуле i = k – 1. Матрица смежности заносится в файл t1.dat. Число вершин в графе определяется директивой const n = 13, m = 13;

  • #include

  • #include

  • #include

  • #include

  • const n = 13, m = 13; // Число вершин в графе.

  • void vv_mat ( FILE •fr, int b[][m], int n1); // Функция для ввода матрицы.



void glubina (int b[][m], int v); // Функция для обхода графа.

  • void glubina (int b[][m], int v); // Функция для обхода графа.

  • void main(void)

  • {

  • FILE •f1;

  • int j, kar, a[n][m], b[n];

  • int jr;

  • clrscr();

  • // Ввод двумерного массива из файла.



f1 = fopen("t1.dat", "r");

  • f1 = fopen("t1.dat", "r");

  • vv_mat( f1, a, m);

  • fclose(f1);

  • cout << "Введи номер вершины для начала обхода k= ";

  • cin >> kar; // kar – номер узла для начала обхода.

  • kar--; // Определяем индекс узла с номером kar.

  • glubina(a,kar);

  • getch();

  • }

  • void glubina (int a[][m], int v)

  • {

  • int st[n], r[n]; //

    r

    массив для маркировки вершин графа.

  • //

    r[i] = -1

    вершина с номером i+1 новая (не просмотрена).

  • int j, k, l;

  • int c, rr; //

    c

    параметр состояния:

    с = 1

    продолжать поиск

  • // новой вершины, смежной для текущей;

  • //

    c = 0

    завершить поиск новой вершины.



for ( j = 0; j < n; j++ )

  • for ( j = 0; j < n; j++ )

  • r[j] = -1; // Определяем начальные значения для

    r[]

    .

  • k = 0; //

    k

    указатель на вершину стека.

  • st[k] = v; // В стек засылаем вершину, с которой начинаем обход.

  • rr = v+1; // Определяем индекс вершины v.

  • cout << "****** Посетили узел- " << rr << "\n";

  • r[v] = 1; // Вершина v пройдена.

  • j = -1; //

    j

    текущий индекс для матрицы смежности.

  • do // Цикл, пока все вершины не пройдены.

  • {

  • // Определяем начальные данные перед поиском очередной вершины.

  • 1 ... 122 123 124 125 126 127 128 129 ... 142
    Карта сайта

    Последнее изменение этой страницы: 2018-09-09;



2010-05-02 19:40
referat 2018 год. Все права принадлежат их авторам! Главная