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

问题描述 投票:-2回答:1

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

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 ;

}
c function pointers data-structures singly-linked-list
1个回答
0
投票

您能帮我为什么我没有得到任何输出

您可能表示列表在打印时为空,这是因为您的函数显然必须返回列表的开头,但是您不返回列表,因此您的列表在调用方是空的。如果您使用insertNodeAtTail

的(非)返回值,则会发生不确定的行为

输入

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

您需要将return替换为return temp;,并且分配head是没有用的>

输入

   return ;

}

您需要将return替换为return head;

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

SinglyLinkedListNode* l = NULL;

l = insertNodeAtTail(l, 1);
/* l is not NULL now (supposing malloc success) */
l = insertNodeAtTail(l, 2);

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

也没有用
© www.soinside.com 2019 - 2024. All rights reserved.