我没有获得此代码的任何输出。
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 ;
}
您能帮我为什么我没有得到任何输出
您可能表示列表在打印时为空,这是因为您的函数显然必须返回列表的开头,但是您不返回列表,因此您的列表在调用方是空的。如果您使用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