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

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

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也没有用