Я создаю древовидную структуру, в которой каждый узел этой древовидной структуры содержит связанный список данных (чисел).Теперь, в моей голове, это означает, что каждая из этих связанных ссылок, очевидно, должна иметь связанную с ними голову, чтобы я мог получить доступ к данным внутри них и проходить циклически, отображая все числа для этого TreeNode.Проблема в том, что я попал в кирпичную стену и действительно не знаю, какой шаг предпринять, где я сейчас нахожусь (см. Ниже).Мне нужно вернуть заголовок для каждого связанного списка, для каждого TreeNode, я не уверен, как.
Ниже приведен мой код, который у меня есть для этого, на данный момент он добавляет имя кУзел и номер в списке, но добавляя несколько номеров в список, я не уверен, какой шаг делать дальше, а затем, как вернуть элемент, чтобы позволить моей (по времени) функции печати проходить цикл.
typedef struct ListNode {
char *number;
struct ListNode *next;
}ListNode;
typedef struct TreeNode {
char *name;
ListNode *numbers;
struct TreeNode *left;
struct TreeNode *right;
}TreeNode;
TreeNode* AddNode(TreeNode *, char *, char *);
TreeNode* SearchTree(TreeNode *root, char *search);
void N_Print(TreeNode *root);
int main(void) {
char my_string[50], name[25], number[25];
TreeNode *root = NULL;
while ((fgets(my_string, 50, stdin)) != NULL) {
if (my_string[0] == '.')
break;
sscanf(my_string, "%s %s", name, number);
root = AddNode(root, name, number);
}
return 0;
}
TreeNode* AddNode(TreeNode *root, char *name, char *number) {
int comparison;
if ( root == NULL) {
root = (TreeNode *)malloc(sizeof(TreeNode));
root->numbers = (ListNode *)malloc(sizeof(ListNode));
root->name = strdup(name); root->numbers->number = strdup(number);
root->left = root->right = NULL;
root->numbers->next = NULL;
}else if (( comparison = strcmp(name, root->name)) < 0 )
root->left = AddNode(root->left, name, number);
else if (comparison > 0) {
root->right = AddNode(root->right, name, number);
} else if (comparison == 0 ) {
root->numbers->number = strdup(number);
root->numbers->next = NULL;
}
return root;
}