我对使用链表和递归的方法有疑问。 我的链表名为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;
}
答案 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());
}