在C中将值移动到队列的末尾

在C中将值移动到队列的末尾,c,linked-list,queue,C,Linked List,Queue,我是C语言的新手,我正在尝试使用这个函数将一个值移动到队列的末尾。前两次有效,但第三次while循环出现问题,我不确定是什么原因造成的。任何帮助都将不胜感激。:) 如果q->head为非空,则不会设置newNode->next,使其处于未初始化状态。下一个遍历列表的代码将跟随这个未初始化的指针,导致未定义的行为,并可能导致崩溃 要解决此问题,只需初始化newNode->next newNode->value = value; newNode->next = NULL; if (q-&

我是C语言的新手,我正在尝试使用这个函数将一个值移动到队列的末尾。前两次有效,但第三次while循环出现问题,我不确定是什么原因造成的。任何帮助都将不胜感激。:)


如果
q->head
为非空,则不会设置
newNode->next
,使其处于未初始化状态。下一个遍历列表的代码将跟随这个未初始化的指针,导致未定义的行为,并可能导致崩溃

要解决此问题,只需初始化
newNode->next

newNode->value = value;
newNode->next = NULL;
if (q->head == NULL)
{
    q->head = newNode;
}
else
    /* your code as before */

代码看起来不错,可能是代码的其他部分有问题,请确保每次创建新节点时,其下一个指针都为null。因此,在“newNode->value=value”之后的这一行添加“newNode->next=NULL”
newNode->value = value;
newNode->next = NULL;
if (q->head == NULL)
{
    q->head = newNode;
}
else
    /* your code as before */