Я делаю некоторую работу над структурами данных, просто чтобы узнать.Прямо сейчас у меня есть, по общему признанию, очень базовая структура данных графа.
Я могу создать граф с предварительно определенным размером, а затем добавить ребра в / из каждой вершины (не направленной).Вот код на данный момент:
graph.h
#pragma once
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <algorithm>
class Graph {
int vertices; // num of vertices in graph
std::vector<int> *adjList;
public:
Graph(int vertices);
void addEdge(int v, int w);
void printGraph();
};
Graph::Graph(int vertices) {
this->vertices = vertices;
adjList = new std::vector<int>[vertices];
}
void Graph::addEdge(int v, int w) {
adjList[v].push_back(w);
}
void Graph::printGraph() {
for (int i = 0; i < adjList->size(); ++i) {
}
}
graph.cpp
#include "stdafx.h"
#include "graph.h"
int main()
{
Graph graph(4);
graph.addEdge(0, 1); //counter starts at 0
graph.addEdge(0, 2);
graph.addEdge(2, 1);
graph.addEdge(2, 3);
return 0;
}
Этоработает довольно хорошо, однако я также хотел бы добавить узлы после того, как объект графа уже был создан.Я действительно не могу понять, как это сделать.
Любое руководство по этому вопросу (а также общие улучшения кода) будут с благодарностью.