Разработка абстрактного типа данных «Простой граф», страница 2

                Вход: Нет.

                Предусловия: нет.

Процесс: опрос способа представления графа.

Постусловия: нет.

Выход: идентификатор способа представления графа. 1 – L-graph, 2 – M-graph

Преобразование к M-графу:

                Вход: нет.

                Предусловия: нет.

Процесс: Меняет способ представления графа, все параметры графа при этом сохраняются.

Постусловия: M-граф

Выход:  нет.

Преобразование к L-графу:

                Вход: нет.

                Предусловия: нет.

Процесс: Меняет способ представления графа, все параметры графа при этом сохраняются.

Постусловия: L-граф

Выход:  нет.

Вставка ребра соединяющего заданные вершины:

                Вход: Номера вершин.

            Предусловия: заданное ребро не существует, граф содержит заданные вершины, номера вершин различны (нельзя вставить петлю)

Процесс: Вставка ребра.

Постусловия: граф с добавленным ребром.

Выход: true ребро добавлено, false если нет.

Удаление ребра соединяющего заданные вершины:

                Вход: Номера вершин.

            Предусловия: заданное ребро существует, граф содержит заданные вершины.

Процесс: Удаление ребра.

Постусловия: граф с удалённым ребром

Выход: true ребро удалено, false если нет.

Проверка наличия ребра соединяющего заданные вершины:

                Вход: Номера вершин.

            Предусловия: нет.

Процесс: Проверка существования ребра, соединяющего заданные вершины.

Постусловия: нет.

Выход: true ребро существует, false если нет.

Изменение данных связанных с ребром(веса ребра):

Вход: Номера вершин, данные.

            Предусловия: заданное ребро существует в графе.

Процесс: Изменение, связанных с ребром данных.

Постусловия: Данные заданного ребра изменены, нет, если не выполнено предусловие.

Выход: если граф не взвешенный - false, иначе true.

Получение данных связанных с ребром(веса ребра):

Вход: Номера вершин.

            Предусловия: заданное ребро существует в графе, граф взвешенный.

Процесс: Получение, связанных с ребром данных.

Постусловия: нет.

Выход: Указатель на данные, связанные с ребром, NULL, если не выполнено предусловие.

Клиентское описание класса простой граф.

template<class Ed>

class graph

{

public:

            graph(int sz,bool or,bool vz)//конструктор--входные параметры размер, и свойства         ~graph()//деструктор

            int V()//          - опрос числа вершин в графе,

            int E()//           - опрос числа ребер в графе,

            bool Directed()//        опрос типа графа (ориентированный / неориентированный)

            int Dense()//   опрос формы представления графа (L- граф 1 / M- граф 2),

            bool Insert(int v1,int v2)//     вставка ребра, соединяющего вершины v1, v2,

            bool Delete(int v1,int v2)//   удаление ребра, соединяющего вершины v1, v2,

            bool Edge(int v1,int v2)//      опрос наличия ребра, соединяющего вершины v1, v2,

            bool SetEdge(int v1,int v2,Ed data)  //задание параметров ребра,

            Ed* GetEdge(int v1,int v2)   //получение параметров ребра

            bool ToMatrixGraph()           //преобразование в M-граф

            bool ToListGraph()    //преобразование в L-граф

}


АТД класса итератор.

Итератор – это объект, который используется для доступа к смежным вершинам определённой вершины графа.

Данные:

          Параметры:

                        Указатель на связанный с итератором объект типа простой граф.

                        Номер вершины

Операции:

Конструктор:

Вход: Указатель на объект типа граф, номер вершины, для которой создаётся итератор.

                Предусловия: вершина существует в графе.

Процесс: Инициализация ссылки на структуру данных (переменную-указатель на граф), номера вершины для которой создаётся итератор, установка итератора в состояние «не установлен».

Постусловия: если предусловие выполнено, то итератор установлен; если не выполнено, то итератор не может быть установлен.

Выход: нет.