Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2018, 10:55   #1
martaOlegovna
Новичок
Джуниор
 
Регистрация: 21.03.2018
Сообщений: 1
По умолчанию Реализация графа через смежные вершины

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

Я начала разбираться но я все равно не могу найти толковый материал. Что нашла (смогла) написила. теперь хочу попросить Вас в помощи. Можете дать ссылку на исходник чтобы можно было посмотреть как на самом деле реализованы эти функции. или если код есть в книгах буду благодарна. А то я уже 2 неделю не могу ничего толкового найти.
Спасибо.

То что у меня есть:
Код:
#pragma once
#include <vector>
struct Edge
{
public:
    Edge(int v, int w);
private:
    int mV;
    int mW;
};
 
struct Node
{
public:
    Node(int x, Node* node);
private:
    int mX;
    Node* mNode;
};
 
class Graph
{
public:
    Graph(int key, bool digraph);
    void insert(int key);
    void insertEdge(Edge edge);
    void remove(int key);
    void removeEdge(Edge edge);
 
    int V();
    int E();
    bool directed();
   
private:
    int Vcnt;
    int Ecnt;
    bool mDigraph = false;
    std::vector<std::vector<int>> mVector;
    std::vector<Node*>  adjacencyLists;
};
Код:
#include "Graph.h"
 
 
Edge::Edge(int v, int w)
    : mV(v)
    , mW(w)
{
}
 
 
Node::Node(int x, Node* node)
    : mX(x)
    , mNode(node)
{
}
 
Graph::Graph(int key, bool digraph)
    : Vcnt(key)
    , Ecnt(0)
    , mDigraph(digraph)
    , adjacencyLists(key)
{
    adjacencyLists.assign(key, 0);
}
 
void Graph::insert(int key)
{
}
 
void Graph::insertEdge(Edge edge)
{
    int v = edge.mV;
    int w = edge.mW;
    adjacencyLists[v] = new Node(w, adjacencyLists[v]);
    if (!mDigraph)
        adjacencyLists[w] = new Node(v, adjacencyLists[w]);
    Ecnt++;
}
 
void Graph::remove(int key)
{
}
 
void Graph::removeEdge(Edge edge)
{
}
 
int Graph::V()
{
    return Vcnt;
}
 
int Graph::E()
{
    return Ecnt;
}
 
bool Graph::directed()
{
    return mDigraph;
}
martaOlegovna вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графы: смежные вершины pashaEx Общие вопросы по программированию, компьютерный форум 33 06.12.2016 20:10
Найти все вершины графа sergei15 Паскаль, Turbo Pascal, PascalABC.NET 0 28.05.2012 19:33
путь от одной вершины графа к другой Катя Горбачева Помощь студентам 5 14.04.2011 20:05
Как сравнить вершины графа на смежность(delphi7)? LightJulia Помощь студентам 2 30.05.2010 19:56
Координаты вершины графа в списке Glarus Помощь студентам 0 15.12.2009 20:21