Skip to content

Conversation

@Brikka23
Copy link

Разработать программный интерфейс модуля (заголовки функций) библиотеки LibraryCPPTemplate для работы с ориентированными графами. Граф должен инициализироваться количеством вершин.
Параметры шаблона графа --- это типы пометок для рёбер и для вершин.
В интерфейсе должна быть поддержка следующих операций: добавить вершину, добавить ребро (между заданными вершинами), удалить вершину, удалить ребро, проверить существует ли ребро между вершинами, задать/считать пометку для ребра, задать/считать пометку для вершины,
получить пометки всех вершин в виде вектора.
Должна быть реализована структура-итератор для поддержки перебора всех соседей заданной вершины.
Реализовать в библиотеке Library модуль поддержки графов с разработанным интерфейсом. Связи должны храниться в виде списков смежности в контейнере List библиотеки LibraryCPPTemplate.
Разработать и добавить в проект LibraryCPPTemplate программу, тестирующую работу библиотеки для графа.
Добавить в решение проект, использующий графы. Программа должна считывать параметры графа и искать в нем кратчайшие пути для заданной пары вершин с помощью алгоритма Дейкстры. Для хранения порядка обработки вершин использовать очередь с приоритетами.
Вершины должны обозначаться строковыми названиями.
Добавить пример входных данных и описать тест в CMakeLists.txt, который запускает разработанную программу и использует входные данные.

@Dovgalyuk
Copy link
Owner

Нужен ещё тест для списка, используемого в графе.

Brikka23 and others added 2 commits December 18, 2025 11:08
Added tests for edge removal and vertex removal in graph.
@Dovgalyuk
Copy link
Owner

Не вижу теста в списке.

Lab4/lab4.cpp Outdated
return graphInput;
}

static Vector<double> dijkstra(const WeightedGraph& graph, Vertex source)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для повторяющихся сложных типов стоит сделать typedef.


graph3.removeVertex(1);

assert(graph3.verticesCount() == 2);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Стоит заменить assert на собственную функцию, потому что при некоторых настройках компилятора assert ничего не делает.

}
}

static void adjustSelfReferences(List<Edge>& adjacency, Vertex from, Vertex to)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Будто бы нет смысла в отдельной функции, можно просто вызывать соседнюю.

@Dovgalyuk
Copy link
Owner

Принято.

@Dovgalyuk Dovgalyuk closed this Jan 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants