英文:
trying to do a replace method in linked list but program replaces only the first element
问题
以下是翻译好的代码部分:
public class ListOfNVersion03PartA
{
private int thisNumber; // 存储在此节点中的数字
private ListOfNVersion03PartA next; // 形成对象的链表
private int []list;
private final int nodeID; // 列表中每个对象的唯一标识符
private static int nodeCount = 0; // 已创建的列表对象数目
/**
* @param num 要存储在此对象中的值
*/
public ListOfNVersion03PartA(int num)
{
thisNumber = num;
next = null;
++nodeCount;
nodeID = nodeCount;
}
public ListOfNVersion03PartA(int [] num)
{
this(num[0]); // 在这种情况下,“this”调用另一个构造函数
list = new int[num.length];
for (int i = 1; i < num.length; ++i)
{
insertLast(num[i]);
}
}
public int replaceAll(int replaceThis, int withThis)
{
int count = 0;
int x = 0;
for (int i = 0; i < nodeCount; ++i)
{
if (thisNumber == replaceThis)
{
thisNumber = x;
x = withThis;
++count;
}
}
return count;
}
}
请注意,这是您提供的代码的翻译版本。如果您有其他需要帮助的地方,请随时提问。
英文:
My current code only replaces the first element of the linked list. I am trying to create a replace method with two parameters but failing. My current logic shows that I am trying to replace the element with my new input but I am assuming I am failing to traverse through the list as only the first one gets replaced.
public class ListOfNVersion03PartA
{
private int thisNumber; // the number stored in this node
private ListOfNVersion03PartA next; // forms a linked list of objects
private int []list;
private final int nodeID; // a unique ID for each object in the list
private static int nodeCount = 0; // the number of list objects that have been created
/**
* @param num the value to be stored in this object
*/
public ListOfNVersion03PartA(int num)
{
thisNumber = num;
next = null;
++nodeCount;
nodeID = nodeCount;
}
public ListOfNVersion03PartA(int [] num)
{
this(num[0]); // in this context, "this" invokes the other constructor
list = new int[num.length];
for (int i=1 ; i<num.length ; ++i)
{
insertLast(num[i]);
}
}
public int replaceAll(int replaceThis, int withThis)
{
int count = 0;
int x = 0;
for ( int i=0 ; i < nodeCount; ++i)
{
if ( thisNumber == replaceThis )
{
thisNumber = x;
x = withThis;
++count;
}
}
return count;
}
答案1
得分: 0
一旦你评估了当前节点(也称为this
),然后你应该执行对下一个节点的评估,直到没有更多的节点需要评估。以下是使用你当前代码的示例:
public int replaceAll(int replaceThis, int withThis) {
int result = 0;
if (thisNumber == replaceThis) {
thisNumber = withThis;
result = 1;
}
if (next != null) {
result += next.replaceAll(replaceThis, withThis);
}
return result;
}
英文:
Once you've evaluated the current node (aka this
), then you should perform the evaluation of the next node until there are no more nodes to evaluate. Here's an example using your current code:
public int replaceAll(int replaceThis, int withThis) {
int result = 0;
if (thisNumer == replaceThis) {
thisNumber = withThis;
result = 1;
}
if (next != null) {
result += next.replaceAll(replaceThis, withThis);
}
return result;
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论