C++ 查找显示链接列表时的错误

C++ 查找显示链接列表时的错误,c++,c++11,data-structures,linked-list,C++,C++11,Data Structures,Linked List,假设我们有一个List类,其中有一个名为front的数据成员,它是一个节点指针。下面是一个成员函数,用于显示列表(调用对象)的成员 它有一个错误。用几句话识别并描述错误 话。然后纠正错误 void display () { Node *temp= new Node; temp=front; while (temp!=NULL) { cout<<temp->data<<"\t";

假设我们有一个List类,其中有一个名为front的数据成员,它是一个节点指针。下面是一个成员函数,用于显示列表(调用对象)的成员

它有一个错误。用几句话识别并描述错误 话。然后纠正错误

    void display ()
    {
       Node *temp= new Node;
       temp=front;
       while (temp!=NULL)
       {
         cout<<temp->data<<"\t";
         temp=temp->next;
       }
   }
void显示()
{
Node*temp=新节点;
温度=前部;
while(temp!=NULL)
{
库特
首先,您不需要在这里调用new。只需声明指针并同时分配它

其次,由于您确实调用了new,所以您刚刚创建了一个内存泄漏,也就是说,您分配的内存现在无法释放(直到程序关闭)

第三,您应该使用访问器方法访问front

myList.GetFront() //this should return a pointer to the front of the list
为什么?如果你不小心做了这样的事情会怎么样

front = front->next;
您刚刚丢失了指向列表前面的指针,其他所有使用front的方法也是如此

首先,您不需要在这里调用new。只需声明指针并同时分配它

其次,由于您确实调用了new,所以您刚刚创建了一个内存泄漏,也就是说,您分配的内存现在无法释放(直到程序关闭)

第三,您应该使用访问器方法访问front

myList.GetFront() //this should return a pointer to the front of the list
为什么?如果你不小心做了这样的事情会怎么样

front = front->next;

您刚刚丢失了指向列表前面的指针,其他所有使用front的方法也是如此。

Display不应该有一个
new
@drescherjm我需要删除创建的新节点吗?@user597654-在用指向另一个o的指针覆盖temp之后,您如何处理分配给temp的内存块Object?如果你没有使用内存,为什么还要调用New?我需要删除创建的新节点吗?在
display()中根本不要使用
New
这就是错误所在。根本不需要分配新节点。将
节点*temp=new node;
更改为
节点*temp=front;
并删除下一行。
显示()中也不应该有删除
也可以。显示器不应该有一个
new
@drescherjm我需要删除创建的新节点吗?@user597654-在用指向另一个对象的指针覆盖temp后,你对分配给temp的内存块做了什么?如果你不使用内存,为什么还要调用new?我需要删除网元吗创建了哪个节点?在
display()
中根本不使用
new
,这就是错误所在。根本不需要分配新节点。将
node*temp=new node;
更改为
node*temp=front;
并删除下一行。
display()中也不应删除
也可以。如果这是一个家庭作业问题,我想要学分;)这根本不是一个家庭作业问题。我在练习时遇到了这个问题。谢谢你澄清错误。如果这是一个家庭作业问题,我想要学分;)这根本不是一个家庭作业问题。我在练习时遇到了这个问题。谢谢你澄清错误。