C++ 不提供任何输出的链表插入代码

C++ 不提供任何输出的链表插入代码,c++,debugging,linked-list,C++,Debugging,Linked List,我一直在研究这个问题: 我编写了以下代码: SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) { SinglyLinkedListNode* temp=head; if (temp!=NULL){ while (temp->next!=NULL){ temp=temp->next; } SinglyLinkedListNode newNode(data); temp-&g

我一直在研究这个问题:

我编写了以下代码:

SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) {
SinglyLinkedListNode* temp=head;
if (temp!=NULL){
while (temp->next!=NULL){
    temp=temp->next;
}
SinglyLinkedListNode newNode(data);
temp->next=&newNode;
}
return head;
}
但是,我在标准输出上没有得到任何输出。有人能告诉我代码有什么问题吗

//对于某些程序员,rest可能会忽略:

SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) {
SinglyLinkedListNode* temp=head;
if (temp!=NULL){
while (temp->next!=NULL){
    temp=temp->next;
}
auto newNode = new SinglyLinkedListNode(data);
temp->next = newNode;
}
return head;
}

甚至此代码也不起作用。

这两行可能是问题所在:

SinglyLinkedListNode newNode(data);
temp->next=&newNode;
变量
newNode
是一个局部变量,在
if
的范围内。一旦
if
的主体结束,
newNode
变量的生命周期也结束,对象将被销毁。这使得指向该对象的任何指针都无效

必须动态创建对象:

auto newNode = new SinglyLinkedListNode(data);
temp->next = newNode;


话虽如此,我建议您停止使用普通的非自有指针,而是看看。

首先,您没有打印任何输出,其次,链接没有打开,可能受到限制。共享可公开查看的链接。让我共享该链接或更好,不要共享任何链接,并通过添加所有必需的信息使您的问题自包含。另外,您的代码有未定义的行为,因为您正在添加局部变量的地址。我也尝试使用cout打印该值,但@user13145713仍然无法工作,并且不要求不向下投票。单凭这一点就值得投反对票!head为空时会发生什么?请查看编辑过的问题一次。@proglove如果您得到答案,请不要更改您的问题。因此,没有交互式论坛,我们将引导您完成所有更改,直到您的代码正常工作。这是一个问答网站,如果你仍然遇到问题,请提出一个新问题。@churill我仍然没有答案,我只是编辑了问题,将所有细节都包含在问题本身中。@churill如果你知道解决方案,请帮助:)@proglove我们需要一个完整的答案。然而,你原来的代码是错误的,这个答案纠正了它,所以在改变这个之后,答案变得无效,我们甚至不知道什么可能是错误的。
auto newNode = new SinglyLinkedListNode(data);
temp->next = newNode;