尝试为图创建邻接表

时间:2020-02-16 21:52:57

标签: c++ list data-structures graph adjacency-list

因此,仍然尝试实现图的邻接表。我必须那样做:您编写大量的顶点,然后为每个顶点编写与之相连的顶点。 例如:

"Write amount of vertices:" 5
1: 2 3 
2: 4 5
3: 1 4 
4: 5
5: 1 3 

然后保存此列表,并可以以邻接矩阵或 发生率矩阵。

#include <iostream>
using namespace std;

class list{
public:

    list() {
        Size = 0;
        head = nullptr;
    }
    void zanos(int data);
    int getSize() { return Size; }
    int& operator[](const int index);

private:

    class Node {
    public:
        Node* next;
        int data;
        Node(int data = 0, Node* next = nullptr) {
            this->data = data;
            this->next = next;
        }
    };
    int Size;
    Node *head;
};

int main() {
    list st1;
    st1.zanos(5);
    st1.zanos(6);
    st1.zanos(10);
    cout << st1.getSize() << endl;
    cout << st1[1];
}

void list::zanos(int data)
{
    if (head == nullptr) {
        head = new Node;
    }
    else {
        Node* current = this->head;
        while (current->next != nullptr)
            current = current->next;
    }
    Size++;
}

int& list::operator[](const int index)
{
    int counter = 0;
    Node* current1 = this->head;
    while (current1 != nullptr) {
        if (counter == index) {
            return current1->data;
        }
        current1 = current1->next;
        counter++;
    }
} 

现在得到了这样的代码,在这里我试图通过我要执行的单链接列表来创建邻接列表(因为它是动态的,我不知道其他方法如何输入未知数量的顶点可以使用索引进行存储和访问。对于索引,我正在尝试重载运算符[],但出现错误: 引发异常:读取访问冲突。 ** list ::操作符[] **(...)返回0x1。

0 个答案:

没有答案