gpt4 book ai didi

java - Java中的StringList递归方法

转载 作者:行者123 更新时间:2023-12-02 02:21:42 24 4
gpt4 key购买 nike

我有一个关于使用链表和递归的方法的问题。我的链表叫做 StringList,基本上是一个有 3 个值的链表。数据就是字母。value 是字母按顺序出现的次数。next 是下一个节点。

我正在尝试创建一个名为 equals 的方法,如果使用 RECURSION 两个 StringList 相等,则该方法基本上返回 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;
}

最佳答案

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

如果您的 CharNode 有 getNext() 和 getData() 方法,您可以像这样实现 equals:

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());
}

关于java - Java中的StringList递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com