Есть веские причины, чтобы не включать в себя множество указателей узлов в узле для использования в более чем одной структуре данных?

голоса
0

Возьмем, к примеру, задание я работаю. Мы должны использовать дерево двоичного поиска для одной части набора данных, а затем связанного списка для другой части в наборе. Предложенный метод профессор был:

struct treeNode
{
    data * item;
    treeNode *left, *right;
};

struct listNode
{
    data * item;
    listNode *next, *prev;
};

class collection
{
public:
         ........
}

Если данные представляют собой класс, содержащий подробные сведения о каждой записи. Очевидно, как он настроен, TreeNode не может существовать в связанном списке.

Не было бы намного проще:

struct node
{
    data * item;
    node *listNext, *listPrev, *treeLeft, *treeRight;
};

то мы можем объявить:

node * listHead;
node * treeRoot;

и включают в себя оба алгоритма вставки в классе.

Есть ли что-то я не хватает?

Задан 09/03/2011 в 19:33
источник пользователем
На других языках...                            


3 ответов

голоса
0

Вы можете сделать это, но вы тратите память с дополнительными указателями. Кроме того, он имеет тенденцию быть более запутанным смешивать типы, как это. Могу ли я, полагая, что данные либо поместить в список или поместить в дерево, но не вставлен в оба? Там действительно не так много причин, чтобы они оба используют ту же структуру, если они разные типов данных в любом случае. Если вы вставляете одни и те же данные в обоих типов, вы могли бы потенциально перейти от обхода дерева для обхода списка, если вы имели какие-либо использовать для такого действия.

Так как вы вставляя данные в обоих списках, было бы сохранить память, чтобы использовать структуру составного узла. Я хотел бы вставить в бинарное дерево, а затем вставить выделенный узел в связанном списке. Вы не на самом деле в конечном итоге с чистого связанного списка или дерева двоичного поиска, но она могла бы быть пройден, как ни один.

Ответил 09/03/2011 в 21:08
источник пользователем

голоса
0

На самом деле, элементы данных должны быть вставлены в обоих списках. (Мирское) Цель задания состоит в сортировке наборов данных в двух различных элементов в наборе.

Так что с этим сказал, не я экономить память? Объединение 2 узла я в конечном итоге с 5 указателей, если бы я оставил их отдельно, я буду использовать 6. Кроме того, я действительно только одну группу данных, таким образом. если у меня было 250 элементов данных, чтобы отслеживать, я бы одну группу 1250 указателей вместо 2 списков 750. Может быть, я недоразумение, что на самом деле получает выделяется указатель вызовов.

Ответил 09/03/2011 в 21:59
источник пользователем

голоса
0

Каков был ответ?

Если данные меньше (хммм) мегабайт, не беспокоиться о потреблении памяти. 1 или 2 гигабайта является типичным для обычных компьютеров сегодня.

Насколько велики пункты? 32 символ? 64k сжатой мультимедиа? Что-то большое?

Как разумно это организовать один пункт, используя оба метода? Если данные действительно совпадают, то структуру 5 указателя interesting- кто-то может найти узел в одном заказе и затем просматривать связанные узлы в другом упорядочении.

Являются ли элементы связаны между собой, некоторые мелки, некоторый сыр? Являются ли они многомерные? кадровый учет? Аудио описания файлов? Рецепты?

В школе, хороший учитель пытается дать вам опыт общих методов и дисциплины. Так же, как художественный класс, или композиция. Карандаш, пастель, 5 пункт эссе. Таким образом, учитель может вы хотите, чтобы написать два разных класса & конструкторами. Используйте одну-структуру для одной части данных, различных по одному для других данных. Или то же самое. Да просто так.

Вне школы, данные поступают в формате и есть операции желательные на ней / с ним. «Прецеденты» истории о том, как используются данные, что должно быть, какие алгоритмы используются.

Смысл этого может быть бимодальным поиска, 2 пары ортогональных указателей. Это может быть Союзы, где каждый элемент asssociated со списком или дерева, но не то и другое одновременно. Это может быть бурная lightwieght подмножеств, деревьев и списков, которые сравниваются и контрастируют ...

В случае сомнений, «структуры данных + алгоритмы = программа». Но это платит, чтобы знать, какой пункт учитель пытается сделать, и хотите ли вы последовать их примеру. (Как правило, в школе, вы делаете.)

Ответил 12/04/2011 в 01:51
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more