我已对链接列表程序进行了大量开发。 当我想要反转我的列表时,它说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;
}
}
答案 0 :(得分:2)
内存耗尽的原因是这个循环:
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
移动到下一个节点。