Java中的StringList递归方法

时间:2018-01-23 15:13:06

标签: java recursion

我对使用链表和递归的方法有疑问。 我的链表名为StringList,基本上是一个包含3个值的链表。 数据就是这封信。 value是字母按顺序出现的次数。 next是下一个节点。

我正在尝试创建一个名为equals的方法,如果2个StringLists使用 RECURSION 相等,则基本上返回true或false。

这是我现在尝试做的,但它似乎对我不起作用,如果有人可以帮助使这个方法正常工作,我将不胜感激。

public boolean equals(StringList str){
    if(str._head == null || _head == null){
        return false;
    }
    CharNode p = _head;
    CharNode b = str._head;
    int value = p.getValue(), valueTwo = str._head.getValue(), index = 0;
    return equals(b,p,value,valueTwo,index);
}

public boolean equals(CharNode b, CharNode p, int value, int valueTwo, int index){
    index++;
    if(p == null || b == null){
        return true;
    }
    if(p.getData() != b.getData()){
        return false;
    }

    if(value == index && p.getNext()!= null) {
        equals(b, p = p.getNext(), value += p.getNext().getValue(), valueTwo, index);
    }
    if(valueTwo == index && b.getNext()!= null){
         equals(b = b.getNext(), p, value, valueTwo = b.getNext().getValue(), index);
    }
    return true;
}

1 个答案:

答案 0 :(得分:2)

作为第一步,尝试简化代码以使其更容易调试: 如果你有p,b作为参数,为什么还有p.getValue()和b.getValue()作为参数?价值和数据有什么区别?

如果你的CharNode有方法getNext()和getData(),你可以实现这样的等于:

public boolean equals(CharNode a, CharNode b) {
  if (a == null && b == null) {
    return true;
  }
  if ((a==null) ||  (b==null)) {
    return false;
  }
  if (a.getData() != b.getData()) {
    return false;
  }
  return equals(a.getNext(), b.getNext());
}