【发布时间】:2014-02-05 22:28:35
【问题描述】:
我是 C 的新手,我正在尝试使用此函数将值移动到队列的末尾。它在前两次有效,但第三次出现了关于 while 循环的问题,我不确定是什么原因造成的。任何帮助都将不胜感激。 :)
void enqueue(queue q, int value)
{
if (q == NULL)
{
return;
}
// Create new node
node * newNode = (node *)malloc(sizeof(node));
if (newNode == NULL)
{
return;
}
// Add node to end of queue
newNode->value = value;
if (q->head == NULL)
{
newNode->next = q->head;
q->head = newNode;
}
else
{
node * head = q->head;
while (head->next != NULL)
{
head = head->next;
}
// Update queue pointer
head->next = newNode;
}
}
【问题讨论】:
-
代码看起来不错,可能是代码的其他部分有问题
-
尝试确保每次创建新节点时,其下一个指针为空。所以在“newNode->value = value”之后的这一行添加“newNode->next = NULL”
标签: c linked-list queue