我对链表程序做了很多开发。
当我想反转我的列表时,它说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
移动到下一个节点。关于java - 链表中的反向方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22436382/