У меня есть две структуры, и они являются вложенными структурами. В этом случае одна структура представляет продуктовый магазин, а другая представляет продукты питания, продаваемые в магазине, например. Это структуры:
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, когда это необходимо?
Любая помощь, которую вы можете оказать на высоком уровне или с кодом, будет оценена здесь.