我有一个函数的代码,其目的是解密由字符串r,0和1给出的消息。这个想法是我有一个BST,并且基于我的r 0和1的字符串,我将能够找到我正在寻找的特定数据的途径。
我根本无法弄清楚要返回的内容以匹配函数的返回值,并从我正在寻找的函数中获取信息!这是教授给出的帮助......
/*The decrypt() method takes an encrypted string (or path through the tree)
in the form provided by encrypt(). It should return a pointer to the
associated string for the given path (or NULL if the path is invalid).*/
任何人都可以帮我说说如何返回正确的变量类型和值,并解释原因?谢谢! (以下代码)
template<class Base>
const Base * EncryptionTree<Base>::decrypt(const string & path) const{
const BSTNode<Base>* temp = root;
bool flag = false;
for (int i = 0; i < path.size(); i++) {
switch (path[i]) {
case 'r':
if (temp != NULL) {
temp = root;
}
else {
flag = true;
}
break;
case '0':
if (temp->getLeft() != NULL) {
temp = temp->getLeft();
}
else {
flag = true;
}
break;
case '1':
if (temp->getRight() != NULL) {
temp = temp->getRight();
}
else {
flag = true;
}
break;
}
}
return ?????;
}
我尝试返回* temp,temp,temp-&gt; getData()(返回一个const Base&amp;)等等。
答案 0 :(得分:0)
我可能错了(因为我没有看到Base和BSTNode的声明)但是如果temp-&gt; getData()返回const Base&amp ;,那么解密函数的结尾可能如下所示:< / p>
if (temp != NULL)
return &temp->getData();
else
return NULL;
因此,如果temp not null ,则您使用 getData()来获取此节点包含的对象(在您的案例字符串中)的引用。然后,您将获取此引用所绑定的对象的地址,并将其传递给调用者。