【发布时间】:2016-08-20 07:26:28
【问题描述】:
为什么下面的代码不起作用?据我所知,当 temp 达到 NULL 时,(new)ing 它应该创建一个 temp 指向它的新节点。奇怪的是,将 while 条件更改为 temp->next!=NULL 效果很好。对此有何解释?
#include<iostream>
using namespace std;
class node{
int data;
node *next;
public:
node(){}
node(int value):data(value),next(NULL){}
void addNode(node *head,int value){
node *temp=head;
while(temp!=NULL){
temp=temp->next;
}
temp=new node(value);
temp->next=NULL;
}
void display(node *head){
node *temp=head;
while(temp!=NULL){
cout << temp->data << endl;
temp=temp->next;
}
}
};
int main(int argc,char** argv){
node *head=new node(15);
head->addNode(head,50);
head->addNode(head,22);
head->display(head);
cin.ignore();
return 0;
}
【问题讨论】:
-
定义“不起作用”并添加mcve
-
另外,
node *temp=new node;正在泄漏内存。 -
你有一个内存泄漏
node *temp=new node;然后你用temp=head;扔掉了指针 -
什么是头?它是在哪里定义的?
-
@Drop 数据没有被添加到列表中
标签: c++ linked-list