查找显示链表时出现的错误



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

它有一个错误。识别并描述几个错误 的话。然后更正错误。

void display ()
{
Node *temp= new Node;
temp=front;
while (temp!=NULL)
{
cout<<temp->data<<"t";
temp=temp->next;
}
}

这是我测试中的问题之一,我在上面给定的代码中找不到任何错误。我什至在编译器中运行了这段代码,它工作正常。

谁能说出错误在哪里?

Node *temp = new Node; // a pointer, called temp, allocated to a new block 
//of memory of size Node
temp = front // the pointer to the block of memory was just overwritten, and now you 
//don't have a pointer to the block of memory you just allocated

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

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

第三,您应该使用访问器方法访问前端。

myList.GetFront() //this should return a pointer to the front of the list

为什么?好吧,如果您不小心做了以下操作会发生什么:

front = front->next;

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

相关内容

  • 没有找到相关文章

最新更新