0

これはグラフを作成する最初の試みであり、LL を使用してベクトル (またはノードまたは要素、それらが何と呼ばれていても) を接続することにしました。ノードのそれぞれには、ノードへのポインターを保持するベクトルがあります。グラフ クラスに「 addEdge 」関数を作成しましたが、プログラムが壊れているようです。私のaddElementクラスは、それらを完全に追加して出力するため、正常に機能しているようです。しかし、エッジを追加しようとすると、壊れます。デバッガーを実行しましたが、次の場所で壊れます

while(curr->next != NULL || curr->val != n)

理由はありますか?

#include "element.h"
#include "vector"
#include "iostream"
#include "functional"

using namespace std;

class Graph
{
public:
    element *head;

    Graph(int V)
    {
        head = NULL;
        vector <element*> nodes;
    }

    void addElement(int val)
    {
        if (head == NULL) 
        {
            element *newelement = new element(NULL, NULL, val);
            head = newelement;
            return ;
        }
        element *newelement = new element(NULL,NULL, val);
        element *curr = head;
        while(curr->next != NULL)
        {
            curr = curr->next;
        }
        curr->next = newelement;
        newelement->prev = curr;
        return;
    }
    void addEdge(int n, int edge)
    {
        element *e = head;
        element *curr = head;

        if(curr = NULL)
        {
            cout<<"There are no elements in your graph to connect";
            return;
        }
        while(e->next != NULL || e->val != edge)
        {
            cout<<"Looking";
            e = e->next;
        }
        if(e->val != edge)
        {
            cout<<"Your edge node doesn't exist";
            return;
        }
        while(curr->next != NULL || curr->val != n)
        {
            cout<<"Looking for main node";
            curr = curr->next;
        }    
        if(curr->val != n)
        {
            cout<<"Could not find the main node";
            return;
        }
        curr->edges.push_back(e);
        cout<<"Edge connected";
        return;
    }

ノードクラス

#include "vector"
#include "iostream"
#include "functional"

using namespace std;
class element {
public:
    element(element* n = NULL, element *p = NULL, int num = NULL)
    {
        val = num;
        next = n;
        prev = p;
    }
    int val;
    element *prev;
    element *next;
    vector<element*> edges;
};
4

0 に答える 0