我对我的链表程序做了很多开发。当我想要反转列表时它显示java堆空间错误(java。lang。outofmemoryerror)
这是我的反向方法:
private void reverse()
{
Node start1=null;
Node ptr1=start;
while(ptr1!=null)
{
Node nnode=new Node();
nnode.data=ptr1.data;
if(isEmpty())
{
start1=nnode;
}
else
{
nnode.link=start1;
start1=nnode;
}
}
Node temp=start1;
while(temp!=null)
{
System.out.println(temp.data);
temp=temp.link;
}
}
内存不足的原因是:
while(ptr1!=null)
{
Node nnode=new Node();
nnode.data=ptr1.data;
if(isEmpty())
{
start1=nnode;
}
else
{
nnode.link=start1;
start1=nnode;
}
}
它不断产生新的Node
,直到ptr1
变成null
,但它从不推进ptr1
。
您需要更改循环条件以检查start1
,或者更改循环体以将ptr1
移动到下一个节点。