我们在 C 中的 LinkedList 有问题。当我计算列表中应该有多少节点时,我总是得到 1
LL计数:1
这是列表代码的添加、计数和获取最后一个元素:
void addLL(LL * head)
{
LL *newNode;
LL *tail = getLastNode(head);
newNode = malloc(sizeof(LL));
if(newNode != DEF_NULL)
{
newNode->ID=-1;
newNode->TCB=-1;
newNode->next = DEF_NULL;
if(!head) head = newNode;
else tail->next = newNode;
}
}
LL * getLastNode(LL * head)
{
LL *temp = head;
while(temp->next != DEF_NULL)
{
temp = temp->next;
}
return temp;
}
CPU_INT32U countLL(LL * head)
{
CPU_INT32U elements = 0;
LL * temp = head;
while(temp->next != DEF_NULL)
{
temp = temp->next;
elements++;
}
return elements;
}
它是这样调用的:
addLL(list);
temp = countLL(list);
Debug_LOG("LL count: %i", temp);
其中 LL * 列表;是一个全局变量,而 temp 在本地范围内。我希望任何人都可以看到我哪里出错了
问候,Sjaak 和 Gerrit