问题
如下示例程序所示, 首先构建了一个如下所示的Node树,每个节点存有一个数字。程序需要通过node的name返回其数字,即findNodeNumByName,其中name是const char*,表示方法中不会修改其参数。另外这个参数来自于另外一个方法,即findNodeNameByNum,输入数字找到对应的node的name。所以正确的程序输出应该为输入1,输出1,输入2,输出2,输出与输入相同。
[code]#include#include#includeclass Node{public: Node(std::string s, int n) { name = (char*)malloc(10); strcpy_s(name, 10, s.c_str()); num = n; } std::string GetName() {return name;} const char* GetNameCstr() {return name;} int GetNum() { return num; } std::vector GetChildNodes() {return childNodes;} char* name; int num; std::vector childNodes;};Node* A, * B, * C, * D, * E, * F, * G, * H;void initializeNodes(){ A = new Node("A", 0); B = new Node("B", 1); C = new Node("C", 2); D = new Node("D", 3); E = new Node("E", 4); F = new Node("F", 5); G = new Node("G", 6); H = new Node("H", 7); A->childNodes.push_back(B); A->childNodes.push_back(C); B->childNodes.push_back(D); B->childNodes.push_back(E); B->childNodes.push_back(F); C->childNodes.push_back(G); E->childNodes.push_back(H);}const char* findNodeNameByNum(Node* node, int num){ const char* n = node->GetName().c_str(); if (node->GetNum() == num) return n; for (auto* n : node->GetChildNodes()) { const char* result = findNodeNameByNum(n, num); if (result != nullptr) return result; } return nullptr;}int findNodeNumByName(Node* node, const char* name){ //std::cout |