细分故障-队列不会初始化

时间:2019-09-30 15:39:43

标签: c linked-list initialization queue singly-linked-list

上面的代码引发了分段错误,我正在绞尽脑汁看看它在哪里。队列未初始化。我一直在看代码最长的时间,我无法确定出了什么问题。

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);
}

仍然存在细分错误

1 个答案:

答案 0 :(得分:3)

ptr_list从未初始化,因此在list_initialize()中,您正在写入随机存储器。在queue_initialize()中,您需要这样的内容:

void queue_initialize(queue* queue_list)
{
    queue_list->ptr_list = malloc(sizeof(s_list));
    list_initialize(queue_list->ptr_list);
}