Приведенный выше код вызывает ошибку сегментации, и я пытаюсь понять, где она находится. Очередь не инициализируется. Я долго искал код и не могу определить, что идет не так.
typedef struct node node;
struct node
{
int data;
node *link;
};
typedef struct list
{
node *head;
node *tail;
int number_of_nodes;
}s_list;
typedef struct queue
{
s_list *ptr_list;
}queue;
void list_initialize(s_list* ptr_list) //debugger says this line is a problem? But seems fine to me?
{
ptr_list->head=NULL;
ptr_list->tail=NULL;
ptr_list->number_of_nodes=0;
}
void queue_initialize(queue* queue_list)
{
list_initialize(queue_list->ptr_list);
}
int main()
{
queue queue;
queue_initialize(&queue); //Have used a debugger and this isn't succesfull.
}
Я не могу изменить имена переменных или структуры, потому что это часть задания, которое я должен заполнить.
Я попытался изменить функцию queue_initialization на:
void queue_initialize(queue* queue_list)
{
queue_list=malloc(sizeof(queue));
list_initialize(queue_list->ptr_list);
}
Все еще существует ошибка сегментации