Вход: Нет.
Предусловия: нет.
Процесс: опрос способа представления графа.
Постусловия: нет.
Выход: идентификатор способа представления графа. 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-граф
}
Итератор – это объект, который используется для доступа к смежным вершинам определённой вершины графа.
Данные:
Параметры:
Указатель на связанный с итератором объект типа простой граф.
Номер вершины
Операции:
Конструктор:
Вход: Указатель на объект типа граф, номер вершины, для которой создаётся итератор.
Предусловия: вершина существует в графе.
Процесс: Инициализация ссылки на структуру данных (переменную-указатель на граф), номера вершины для которой создаётся итератор, установка итератора в состояние «не установлен».
Постусловия: если предусловие выполнено, то итератор установлен; если не выполнено, то итератор не может быть установлен.
Выход: нет.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.