通过用户输入交换链接列表中的节点

时间:2019-03-26 18:18:53

标签: java

这是一个作业问题-正在寻求指导!

我有一个对象的LinkedList,在其中我必须接受要删除其“游戏编号”(又称gameId)的测试类中的用户输入。我当前正在遍历节点,当gameId = getGameId()时,我们输入if语句进行交换,并将节点计数减1。我的问题是,我无法正确交换元素!

对象{71、41、31、21}的当前游戏ID。

假设用户输入要删除的游戏编号41,我需要将顺序更改为{71,31,21,41},然后将节点数减少1,这样只有{71,31,21}会显示为用户。

如果我删除31,则会得到期望的输出{71,41,21}!如果删除41,则会得到{71,41,31}。当我删除71时,输出保持不变{71、41、31、21}(我想我需要实现对第0个节点的gameId = getGameId的检查-到目前为止还没有!)< / p>

如何正确进行交换?

在此先感谢您的帮助。

我已经尝试了很多方法,并在Google上搜索了很多,并在这里阅读了先前的问题以尝试找到解决方案,但我仍然无法使交换正常工作。

``` public void deleteByGameId(int gameId, BingoLinkedList list) {
     Node<E> previous = head;
     Node<E> current = head;
     System.out.println("test ");
     for (int i = 1; i < list.numberOfItems; i++) {
         previous = previous.next;
         System.out.println("test: " + ((Bingo) previous.element).getGameId());
         if (gameId == ((Bingo) previous.element).getGameId()) {
             current = current.next;
             current.next = previous.next;
             numberOfItems--;
         }
     }
}

1 个答案:

答案 0 :(得分:0)

问题的解决方法是检查if语句中的previous.next.element,然后将current与previous.next交换,将previous.next与current.next交换。