2014-01-31 119 views
0

做一些课程,我需要做一个二叉搜索树。一块蛋糕,应该很有趣。 因为C++没有使用字典,所以我决定使用BST创建一个字典。 我在网上找到了一些示例代码,给了我一个关于它们如何放在一起的简单想法,这些都是相对简单的,但是对于C++来说是新的并且来自C#环境,有一件事让我陷入困惑,那就是' C'。我不明白为什么'c'在while循环中返回true,或者为什么在左侧或右侧更改数据会影响此结果。C++结构返回true,但为什么?

node* t = new node; 
node* parent; 

t->data; 
t->left = NULL; 
t->right = NULL; 
parent = NULL; 

... 

    node* c; 
    c = root; 

    while (c) 
    { 
     parent = c; 

     if(t->data > c->data) 
     { 
      c = c->right; 
     } 
     else //else it's assigned left 
     { 
      c = c->left; 
     } 
    } 

回答

3

在C和C++中,如果指针为null,则该指针被视为false;否则为true。这个while循环一直沿树走,直到c变成空指针。

另外,C++ 确实有词典。检查出std::mapstd::unordered_map

+0

啊,我明白了。非常感谢你。我早些时候阅读了std :: map,但我想它会让我的思想滑落,但噢,重新发明轮子没有任何坏处。 – Anthony

相关问题