Я пытаюсь создать телефонную книгу, которая представляет собой двоичное дерево поиска, которое имеет связанный список в конце каждого листа, но я столкнулся с «Ошибка сегментации (Ошибка ядра "). У меня такое чувство, что это вызвано моей функцией «makenode», которая создает первый узел дерева. Мои структуры являются следующиеИспользование «->» для навигации по структурам с помощью указателей
typedef struct number{
char number [20];
struct number *next;
} Number;
typedef struct list {
Number *first, *last;
} List;
typedef struct tree {
char name[20];
struct tree * left;
struct tree * right;
List * next;
} Tree;
И моя функция makenode является
Tree *makenode (char name[20], Tree *l, Tree *r, Number e) {
Tree *newnode;
newnode = malloc(sizeof(Tree));
strncpy(newnode->name,name,19);
newnode->next=malloc(sizeof(List));
newnode->next->first=malloc(sizeof(Number));
strncpy(newnode->next->first->number,e.number,11);
newnode->left = l;
newnode->right = r;
return newnode;
}
Я просто надеялся, что за советом ли линии
strncpy(newnode->next->number,e.number,11);
является линия вызывает проблему, и, возможно, некоторые советы о том, почему это вызывает проблему. Спасибо заранее.
Почему вы не используете отладчик? Если вы это сделаете, вы остановитесь на строке, которая выдает исключение. Поэтому, пожалуйста, используйте инструменты, которые у вас уже есть! – Klaus
Апология для новизны, но как я могу использовать отладчик? И он встроен в GCC? –
yep, из-за нехватки памяти для 'newnode-> next' –