链表中的反向方法

时间:2014-03-16 11:42:48

标签: java linked-list nodes

我已对链接列表程序进行了大量开发。 当我想要反转我的列表时,它说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;
    }
}

1 个答案:

答案 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移动到下一个节点。