aadit sah Ответов: 1

Как реализовать граф и связанный с ним вопрос, например: обнаружить цикл, бипертит и т.д. без какой-либо библиотеки в одном файле C++.


#include<iostream>
using namespace std;

class Node {
    public:
        int data;
        Node* next;

        Node(int data) {
            this->data=data;
            this->next=NULL;
        }
};

class AdjList{
public:
        Node * head;
        AdjList() {
                head=NULL;
        }

        void add (int data) {
                Node * newNode=new Node(data);
                if(head==NULL) {
                        head=newNode;
                }else {
                        Node* temp=head;
                        while(temp!=NULL) {
                            temp->next=newNode;
                            temp=temp->next;
                        }
                }
        }
};

class Graph{
        int v;
        AdjList* adjList;

        public:
            Graph(int v) {
                this->v=v;
                adjList=new AdjList[v];
            }

            void addEdge(int src, int dest) {
                    adjList[src].add(dest);
            }

        void print(){
            for(int i=0;i<v;i++){
                Node *temp = adjList[i].head;
                cout << i << " -> ";
                while(temp != NULL)
                {
                    cout << temp->data << " ";
                    temp = temp->next;
                }
                cout << endl;
            }
        }
};

int main()
{
	// create the graph given in above fugure
    int V = 5;
	Graph *graph = new Graph(V);
	graph->addEdge(0,1);
    graph->addEdge(0, 4);
    graph->addEdge(1, 2);
    graph->addEdge(1, 3);
    graph->addEdge(1, 4);
    graph->addEdge(2, 3);
    graph->addEdge(3, 4);

    // print the adjacency list representation of the above graph
    graph->print();

    //return 0;
}


Что я уже пробовал:

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

ZurdoDev

В чем заключается ваш вопрос?

Rick York

Две вещи помогут вам получить ответ на ваш вопрос : опишите проблему, с которой вы столкнулись. Вы ожидаете, что люди догадаются или проанализируют ваш код и поймут его? Во-вторых, не используйте текстовую речь. Если вы ожидаете, что люди будут тратить свое время, чтобы помочь вам, то по крайней мере произнесите слово "пожалуйста".

aadit sah

Извините, сэр. Я новичок здесь у меня есть проблема в функции печати в классе graph который я публикую выше

Richard MacCutchan

Какой вопрос? Вы действительно читали то, что Рик Йорк написал выше?

1 Ответов

Рейтинг:
1

KarstenK

Обычно это общий стиль в C++, что код gots разделен, и поэтому каждый класс имеет свой собственный заголовок и cpp-файл. Это улучшает читабельность.

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

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