Математическая модель африканской электрификации, страница 2

                 {

                   SubInt t1,t2;

                   list *next;

                 };

4.  Укрупненный алгоритм решения задачи

1.  Укрупненный алгоритм решения задачи построения остовного дерева с минимальным весом


2.  Укрупненный алгоритм решения подзадачи создания списка вершин


3.  Укрупненный алгоритм решения подзадачи удаления заданного элемента из списка


4.  Укрупненный алгоритм решения подзадачи ввода данных


5.  Укрупненный алгоритм решения подзадачи добавления элемента в дерево двоичного поиска


6.  Укрупненный алгоритм решения подзадачи создания списка


7.  Укрупненный алгоритм решения подзадачи добавления ребра в список, который содержит остовное дерево с минимальным весом


8.  Укрупненный алгоритм решения подзадачи вывода остовного дерева с минимальным весом

 


9.  Алгоритмрешения подзадачи

 


5.  Структура программы

Главный модуль,Модуль А,Модуль K,Модуль F,Модуль G,Модуль E,Модуль B,Модуль C,Модуль D,Модуль H


Главный модуль:

Назначение:  Определение входных и выходных данных задачи, ввод входных данных, последовательный просмотр домов (столбов) и поиск остовного дерева с минимальным весом, вывод результата.

Прототип функции: void main ()

Модуль А:

Назначение:  Ввод электрической сети.

Прототип функции:  void Postr ()

Модуль B:

Назначение: Создание списка.

Прототипфункции: void Init_spisok(L **l)

Параметры:  l – (входной и выходной пераметр) голова списка, который хранит остовное дерево с минимальным весом.

Модуль C:

Назначение: Построение остовного дерева с минимальным весом.

Прототипфункции: void Reshenie(list **p)

Параметры:  p - (входной и выходной пераметр) голова списка, который хранит остовное дерево с минимальным весом.

Модуль D:

Назначение: Вывод остовного дерева с минимальным весом.

Прототип функции: void out(L*p)

Параметры: p – (входной параметр) голова списка, который хранит остовное дерево с минимальным весом.

МодульE:

Назначение: Добавление элемента в дерево двоичного поиска.

Прототипфункции: void Search (int A, int B, int C, Ref *p)

Параметры: A – (входной параметр) дом.

 B – (входной параметр) дом.

 С – (входной параметр) цена кабеля между домом А и домом В.

 p – (входной и выходной параметр) корень дерева двоичного поиска.

Модуль F:

Назначение: Создание списка домов.

Прототипфункции: void Postroenie (svqz *UkStr)

Параметры: UkStr – (входной и выходной параметр) голова списка, который содержит дома.

Модуль G:

Назначение: Нахождение заданного дома.

Прототипфункции: void Poisk (svqz st, SubInt MENT, svqz *Res)

Параметры: st – (входной параметр) голова списка, который содержит дома.

MENT – (входной параметр) заданный дом.

Res – (выходной параметр) элемент списка, который хранит в себе заданный дом.

Модуль H:

Назначение: Удаление заданного элемента из списка.

Прототип функции: void Udalenie (svqz *zv, svqz UkStr)

Параметры: zv – (входной и выходной параметр) заданный элемент.

                             UkStr – (входной параметр) глава списка, который содержит дома.

Модуль K:

Назначение: Добавление кабеля в список, который содержит остовное дерево с минимальным весом.

Прототипфункции: void insert(L **l,SubInt t1,SubInt t2)

Параметры: l – (входной и выходной параметр) голова списка, который содержит остовное дерево с минимальным весом.

 t1 – (входной параметр) дом.

 t2 – (входной параметр) дом.

6.  Текст программы на языке Си

#include <conio.h>

#include <stdio.h>

#define TRUE 1

#define FALSE 0

typedef struct list L;

typedef unsigned int SubInt;

typedef struct Uzel *Ref;

Ref Root;

typedef struct list

{

  SubInt t1,t2;