在第一行,获取输入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。
我不明白为什么值会改变。