Структура C ++, возвращающая true, но почему?

0

Выполнение некоторых курсовых работ, и мне нужно создать двоичное дерево поиска. Кусок торта, должно быть весело. Поскольку C++ не содержит словарь, я решил сделать его с помощью BST. Я нашел несколько примеров кода в Интернете, чтобы дать мне краткое представление о том, как они собраны вместе, и все это относительно просто, но, будучи новым для C++ и пришедшим из среды С#, одна вещь бросила меня в замешательство, и это "с". Я не понимаю, почему "c" возвращает true в цикле while или почему изменение данных слева или справа влияет на этот результат.

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 assigned left
        {
            c = c->left;
        }
    }
Теги:
structure
binary-search-tree

1 ответ

2

В C и C++ указатель считается ложным, если он равен null, и true в противном случае. Этот цикл while продолжает идти по дереву, пока c станет нулевым указателем.

Кроме того, C++ имеет словари. Проверьте std::map и std::unordered_map.

  • 0
    Ааа, я понимаю. Большое спасибо. Я читал о std :: map ранее, но я думаю, что это ускользнуло от меня, но, ну, ничего страшного в изобретении колеса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню