Я пишу программу, которая считывает поток данных и разбирает его на несколько значений: целые числа, числа с плавающей запятой, символы или составное значение, которое содержит набор значений (может быть вложенным). , Как я мог представить это в C? Я думал о объединении int
, float
, char
, а затем имел массив указателей на такие объединения для составного значения, но это не может быть вложенным.
(я воображаю, что вы анализируете файл Xml)
Предположим, что у вас есть куча узлов. Каждый узел может иметь значение, он может быть одним из множества братьев и сестер и может иметь дочерние элементы. Это даст вам такую структуру, как:
struct Node
{
DATA Value;
DATATYPE Type;
Node* nextSibling;
Node* firstChild;
};
DATA
может быть объединением, как вы описали, или отдельными переменными. Однако, поскольку вы будете считывать из него значения в том же виде, в каком вы их сохранили, объединение должно быть в порядке. DATATYPE
должно быть перечислением.
Вы имеете в виду char
, а не char[]
? Все значения char могут храниться в int
. Если уж на то пошло, можно с уверенностью сказать, что все нужные вам значения int
(и все возможные значения int
на вашем компьютере) могут быть точно представлены как double
.
Итак, я рекомендую древовидную структуру с двойными
полезной нагрузкой в узлах. Используйте enum
для различения типа, если это необходимо. Вы можете представить n-арное дерево, используя один дочерний указатель и один указатель «следующий» связанного списка… Где-то в Википедии есть диаграмма, но я не могу ее найти :v( .