2014-09-19 44 views
0

我目前有2个类,Images和ImageNode。在ImageNode类中,我有一个反转链接列表的递归方法。我相信我的代码对于该方法是正确的,但是我很困惑我应该如何在我的Images类中调用此方法。从另一个类中调用一个反向链接列表的递归方法

ImageNode方法---

public ImageNode reverseUsingPrevious(ImageNode previous) { 
    if(previous == null) return previous; 

    ImageNode next = previous.getNext(); 

    if(next == null) return previous; 

    previous.setNext(null); 
    ImageNode rev = reverseUsingPrevious(next); 
    next.setNext(previous); 
    return rev; 
} 

图像的方法----

private void reverseRec() { 
    cursor.reverseUsingPrevious(head); 
//the cursor is the currently selected image(node), head is the start of the linked list 
} 

我不是100%肯定,我应该被解析成reverseUsingPrevious方法。

+2

“我相信我的代码是正确的”那么你的问题是什么? * not *有什么作用? – 2014-09-19 09:43:30

+0

我相信我的reverseUsingPrevious是正确的,但不是我的reverseRec()方法...该方法导致该问题 – 2014-09-19 09:45:15

+0

请指定:它是一个双链表吗?请发布ImageNode的类属性。你的任务是否明确要求递归方法作为解决方案? – 2014-09-19 09:47:54

回答

1

通过在cursor.reverseUsingPrevious(head);之前加入head =来更新头部。

额外提示:

即使方法reverseUsingPrevious可能的工作,因为它是,它不会(从调用reverseUsingPrevious分开)调用本地对象的任何方法或变量可言,所以它可能只是也一直是静态的。

但不是将其设置为静态,而是可以删除参数(ImageNode previous),并将previous的每个实例替换为this

现在,不是调用reverseUsingPrevious(node),而是将节点放在前面:node.reverseUsingPrevious()

+0

谢谢,我知道我很接近,谢谢你理解我想要通过的东西。我相信这可能会更好,但它做我需要它做的工作...感谢您的提示,将牢记在心。 – 2014-09-19 11:01:27