交换线性链接列表中的值并递归返回一个副本

时间:2012-10-13 19:24:05

标签: java linked-list

我正在尝试创建一个带有链表的函数,并搜索列表中的每个节点。如果节点具有匹配的int,i1,则与i2交换。最后返回一个链表,该链表是其替换的副本。

迭代地,我想我可以创建列表的副本,遍历每个节点,然后检查并替换。

for(LN copy = list; copy != null; copy = copy.next;)
  if (copy.value == i1)
   copy.value == i2;
return copy;

原型是

public static LN copySwap (LN list, int i1, int i2);

我不知道如何以递归方式开始实现这一点。

1 个答案:

答案 0 :(得分:1)

假设LN的构造函数接受一个值和列表中的下一个节点,这应该有效:

public static LN copySwap (LN list, int i1, int i2) {
    if (list == null) {
        return null;
    }
    return new LN(list.value == i1 ? i2 : list.value, copySwap(list.next, i1, i2));
}