Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Помогите сделать обход двоичного дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм рекурсивного спуска http://www.cyberforum.ru/cpp-beginners/thread1239321.html
подскажите что почитать про этот алгоритм? хочу реализовать парсер математических выражений (без переменных, но с функциями типа sin, cos...), пишу на c++ а то в гугле все примеры на других языках =(
C++ Векторы. Дана последовательность целых чисел. Заменить все четные элементы на Х Дана последовательность целых чисел. Заменить все четные элементы на Х. Помогите пожалуйста, сам изучаю язык что бы перевестись в другую группу и не у кого спросить. где ошибка ? #include... http://www.cyberforum.ru/cpp-beginners/thread1239298.html
Как узнать частоту звука без сторонних библиотек C++
кто нибудь знает как в работать со звуком без сторонних библиотек? мне нужно чтобы во время проигрывания звука можно было узнать его спектр , из него вытащить частоты и сравнить их с эталоном. при...
C++ Удаление строки в двумерном массиве
Как удалить строку в двумерном массиве ?
C++ Крестики-нолики, поиск в массиве для выявления победителя http://www.cyberforum.ru/cpp-beginners/thread1239282.html
Здравствуйте. Имеем игру крестики-нолики, поле хранится в виде матрицы 10х10, нужно поставить 5 в линию. Необходимо написать функцию, которая после каждого хода будет проверять наличие победителя...
C++ Intrinsic функция для определения количества единиц в блоке Есть блок, скажем типа __m256 и между всеми его байтами нужно выполнить xor. Или, что аналогично, посмотреть, четно ли количество единиц в этом блоке. Есть ли готовые intrinsic функции для этого?... подробнее

Показать сообщение отдельно
roma_m
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 36

Помогите сделать обход двоичного дерева - C++

06.08.2014, 23:50. Просмотров 355. Ответов 5
Метки (Все метки)

Есть некий проект (большой, несколько файлов), где происходит процессы со списком (добавление, удаление и т. д.).
Структура:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * Структура list_node описывает элемент списка
 */
typedef struct l_node{
    void *data;        // Указатель на данные
    l_node *next;      // Указатель на следующий элемент
} list_node;
 
/**
 *Структура student описывает информацию о элементе списка
 */
typedef struct {
    char name[50];
    int order;
    float average_point;
} student;
И возникает проблема вывода информации на консоль.
Делается это следующим образом:
- функции
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void list_reset(list_head *list){
    if(list==NULL){
        return;
    }
    list->current = NULL;
}
 
int list_move_next(list_head *list){
    if (list==NULL || list->head==NULL){
        return 0;
    }
    
    if (list->current==NULL){
        list->current = list->head;
        return 1;
    }
 
    list_node *node = list->current;
    if (node->next==NULL){
        return 0;
    }
    list->current = node->next;
    
    return 1;
}
 
void *list_current(list_head *list){
    if (list==NULL){
        return NULL;
    }
 
    list_node *node = list->current;
    if (node==NULL){
        return NULL;
    }
 
    return node->data;
}
- main
// Проход по списку и вывод на экран
C++ (Qt)
1
2
3
4
5
6
7
8
student *s;
            list_reset(&list); // Сбрасываем внутренний указатель списка
            while(list_move_next(&list)){ // Перемещаемся к следующему элементу
                s = (student*)list_current(&list); // Получаем данные тек. элем.
                printf("%s\t", s->name);
                printf("%d\t", s->order);
                printf("%f\n", s->average_point);
            }
Так вот, в чем суть. Пытаюсь написать двоичное дерево по похожей схеме.
Структура:
C++ (Qt)
1
2
3
4
typedef struct leaf{
        T *data;
        leaf *right, *left;
    }TLeaf;
И вроде сделал все правильно, но не могу перепрограммировать функцию
bool moveNext().

Помогите решить данную проблему. Хотя бы какой нибудь алгоритм.Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru