数组值无意更改

时间:2019-10-14 08:08:01

标签: c++

在第一行,获取输入n(节点数),m(边数),start(起始节点数)并获取无向{{ 1}}边/ 最后,我想打印出dfs结果。但是,当我使用m时,它会改变。我不想改变。

Node*

下面的代码是主要问题。

class Node {
private:
    int n;
    Node* next = 0;
public:
    Node(int _n) {
        n = _n;
    }
    Node() {};
    Node* getNext() {
        return next;
    }
    void setNext(Node* ptr) {
        next = ptr;
    }
};

我试图将相邻的节点(保存到节点'i')保存在arr [i]中。

示例代码为:

Node* arr = new Node[n + 1];// use 1 to n

for (int i = 1; i <= m; i++) {
    int num1 = 0, num2 = 0;
    cin >> num1 >> num2;

    if (!arr[num1].getNext())
        arr[num1].setNext(&Node(num2));
    else {
        Node* tptr = arr[num1].getNext();
        while (tptr->getNext()) tptr = tptr->getNext();
        tptr->setNext(&Node(num2));
    }
}

我期望的结果结构是arr [1]-> 2-> 3-> 4,但实际结果是arr [1]-> 2-> 4-> 4。

我不明白为什么值会改变。

0 个答案:

没有答案