我对链表程序做了很多开发。
当我想反转我的列表时,它说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/

10-10 22:21