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 はローカル スコープにあります。私がどこで間違ったのか誰かがわかるといいのですが
ごきげんよう、シャークとゲリット