我们在 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