您能帮助我为什么我没有得到任何输出。我的程序正在运行。代码写在下面

我没有得到此代码的任何输出。

SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data)
 {
    struct SinglyLinkedListNode*      temp=(SinglyLinkedListNode*)malloc(sizeof(SinglyLinkedListNode));
    struct SinglyLinkedListNode* prev;
    temp->data=data;
    temp->next=NULL;
    if(head==NULL)
    {
        head=temp;
        return;
    }
    prev=head;
    while(prev->next!=NULL)
    {
        prev=prev->next;
    }
    prev->next=temp;
    return ;

}
评论
Norma
Norma

您的函数显然必须返回列表的开头,但您不必返回它

if(head==NULL)
{
   head=temp;
   return;
}

you need to replace return by return temp;, and it is useless to assign head

   return ;

}

you need to replace return by return head;

当然,调用者必须使用返回值更新列表头,例如

SinglyLinkedListNode* l = NULL;

l = insertNodeAtTail(l, 1);
l = insertNodeAtTail(l, 2);

在这种情况下,即使从第二个呼叫重新分配l也没有用

点赞
评论