struct (Элементарный вопрос!!)
Модератор: Модераторы разделов
-
kkkggg
- Сообщения: 100
struct
struct Tnode
{
string word;
int count;
Tnode* left; // Что это такое?
Tnode * right; // Что это такое?
};
Раскажите, что это такое и для чего это можно использовать, если можно элементарный пример.
Мне не понятны строки Tnode* left;.
{
string word;
int count;
Tnode* left; // Что это такое?
Tnode * right; // Что это такое?
};
Раскажите, что это такое и для чего это можно использовать, если можно элементарный пример.
Мне не понятны строки Tnode* left;.
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: struct
хм... очень похоже на указатели на два елемента. один левее текущего, а второй - правее текущего.
можно из такой штуки, например, двусвязный список замутить.
можно из такой штуки, например, двусвязный список замутить.
слава роботам!
-
dip56245
- Сообщения: 14
Re: struct
такая структура используется для Динамических Списков, судя из названия узла (ноды).
У первого элемента left будет nil или null не помню точно как в С, right на следующий элемент... соответственно у последнего left ссылается на предыдущий элемент, а right на nil....
В string & count будут хранится какие-то данные... имхо так.
У первого элемента left будет nil или null не помню точно как в С, right на следующий элемент... соответственно у последнего left ссылается на предыдущий элемент, а right на nil....
В string & count будут хранится какие-то данные... имхо так.
Just for Fun © Linus Torvalds
Мы изучили ваше коммерческое предложение по разработке информационной системы и приняли решение приобрести некоторое количество той травы, которую вы курите
Мы изучили ваше коммерческое предложение по разработке информационной системы и приняли решение приобрести некоторое количество той травы, которую вы курите
-
aLexx programmer
- Сообщения: 985
- Статус: Турук-Макто
- ОС: Gentoo -> Ubuntu
Re: struct
TNode - узел двоичного дерева.
left и right - указатели на левое и правое поддеревья.
dip56245
В таких случаях используются указатели next и prev.
left и right - указатели на левое и правое поддеревья.
dip56245
(dip56245 @ May 17 2006, в 09:30) писал(а):такая структура используется для Динамических Списков
В таких случаях используются указатели next и prev.
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: struct
можно только посоветовать набрать в гугле 'с бинарные деревья', а также вкурить материал по структурам данных.
-
Zeus
- Сообщения: 694
Re: struct
Для дерева неплохо было бы ещё иметь указатель на родителя.
-
aLexx programmer
- Сообщения: 985
- Статус: Турук-Макто
- ОС: Gentoo -> Ubuntu
Re: struct
(Zeus @ May 17 2006, в 18:09) писал(а):Для дерева неплохо было бы ещё иметь указатель на родителя.
Вовсе необязательно. Смотря, для чего нужно дерево.
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: struct
Скорее всего это действительно упорядоченное бинарное дерево, в поле word хранится слово, в поле count хранится то, сколько раз оно встречалось.
-
Zeus
- Сообщения: 694
Re: struct
aLexx programmer писал(а): ↑17.05.2006 18:22(Zeus @ May 17 2006, в 18:09) писал(а):
Для дерева неплохо было бы ещё иметь указатель на родителя.
Вовсе необязательно. Смотря, для чего нужно дерево.
Я ж не говорю, что обязательно, но неплохо бы.
-
Flagman
- Сообщения: 9
Re: struct
Zeus писал(а): ↑18.05.2006 10:26aLexx programmer писал(а): ↑17.05.2006 18:22
(Zeus @ May 17 2006, в 18:09) писал(а):
Для дерева неплохо было бы ещё иметь указатель на родителя.
Вовсе необязательно. Смотря, для чего нужно дерево.
Я ж не говорю, что обязательно, но неплохо бы.
elide же написал - что это двусвязный список и он прав на 100%
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: struct
elide же написал - что это двусвязный список и он прав на 100%
под эту структуру подходят как двусвязный список, так и бинарное дерево. причём в данном коде это скорее всего бинароное дерево, т.к. структура имеет говорящие название Tnode eq 'Tree node'
-
Flagman
- Сообщения: 9
Re: struct
У деревьев есть еще родитель(и) и дети
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: struct
Flagman
мдя.
чем вам не бинарное дерево?
мдя.
Код: Выделить всё
struct Tnode
{
string word;
int count;
Tnode* left; // указатель на левое дочернее поддерево(потомок)
Tnode * right; // указатель на правое дочернее поддерево(потомок)
};
/* ... */
Tnode* btree, parrent_btree;
/* ... */
parent_btree = btree; // родительский узел
btree = btree->left->right->left;
printf("%s\n", btree->word);
btree = parent_tree;
/* ... */чем вам не бинарное дерево?
-
aLexx programmer
- Сообщения: 985
- Статус: Турук-Макто
- ОС: Gentoo -> Ubuntu
Re: struct
(Flagman @ May 18 2006, в 15:58) писал(а):У деревьев есть еще родитель(и) и дети
У деревьев в общем случае нет родителей и детей. Они есть у узлов.
(Flagman @ May 18 2006, в 15:58) писал(а):так что никак они сюда не подходят
Чушь. Есть много задач и алгоритмов, где указатель на родителя не требуется. Пример - добавление/удаление/поиск по бинарному дереву (без перестройки самого дерева, конечно).
(Flagman @ May 18 2006, в 15:58) писал(а):либо допишите еще пару указателей на них.
Вот Вы и допишИте. А мы не будем B)