Как я могу сохранить root бинарного дерева поиска, если используются две структуры? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть две структуры, и они являются вложенными структурами. В этом случае одна структура представляет продуктовый магазин, а другая представляет продукты питания, продаваемые в магазине, например. Это структуры:

typedef struct store store;
typedef struct foodItem foodItem;

struct foodItem {
    char itemName[20];
    foodItem *prev, *next, *rootItem; //stores root item in BST
};

struct store {
    char storeName[20];
    store *prev, *next;
    foodItem *items;
} *rootStore; //stores root user in BST

Данные, введенные в связанные списки выше, должны быть вставлены в двоичные деревья поиска (или BST). У меня возникла проблема с root со списком продуктов. root BST для магазинов прост, потому что есть только один BST магазинов, но есть много BST продовольственных товаров, потому что есть несколько магазинов. Как я могу надежно отслеживать root каждого продукта BST?

Чтобы решить эту проблему, я попытался поместить *rootItem в struct foodItem, чтобы каждый узел root можно было отслеживать с помощью указатель, но это приводит к тому, что каждый узел в BST имеет свой собственный root (если моя оценка этой проблемы верна). Каждый продукт BST должен иметь свой собственный узел root, а не каждый узел root. Другое решение, о котором я могу подумать, - это хранить указатель внутри struct store, чтобы каждый магазин мог отслеживать root своего продукта BST, но не приведет ли это к затруднениям с доступом к root, когда это необходимо?

Любая помощь, которую вы можете оказать на высоком уровне или с кодом, будет оценена здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...