为链表集合创建插入方法 (Java)

Creating an insert method for Linked List Collection (Java)

我正在尝试为视频游戏集合创建自己的链表方法 titles/prices。我在添加和删除方法方面取得了一些进展,但我需要制作一个以在列表中的某处插入一个,而不仅仅是在最后。通过使用索引或在列表中的其他对象之后插入。不过,我似乎无法让它工作。

这是我目前的情况:

VideoGame.java

public class VideoGame {

private String name;
private Double price;

public VideoGame(String n, Double p)
    {
    name = n;
    price = p;
    }

public String getName() 
    {
    return name;
    }

public void setName(String name) 
    {
    this.name = name;
    }

public Double getPrice() 
{
    return price;
}

public void setPrice(Double price) 
{
    this.price = price;
}

@Override
public String toString() {
    return "Name: " + name + ", " + "Price: $"+price;
}
}

VideoGameNode

public class VideoGameNode 
{
public VideoGame data;


public VideoGameNode next;


public VideoGameNode(VideoGame s)
{
    data = s;
    next = null;


}


}

VideoGameList

public class VideoGameList {
private VideoGameNode list;


public VideoGameList()
{
    list = null;

}
//method to add entries into the collection (at the end each time)
public void add(VideoGame s)
   {
    VideoGameNode node = new VideoGameNode(s);
    VideoGameNode current;


  if (list == null)
     list = node;
  else
  {
     current = list;
     while (current.next != null)
        current = current.next;
     current.next = node;
  }
  }

我有一个 tester/driver 程序,但它与我现在需要帮助的事情有点无关。我似乎无法让插入方法正常工作。有人有什么想法吗?

您可以创建一个 insert() 方法,该方法也将 position 作为参数。

在此方法中,您可以编写与为 add() 方法编写的代码类似的代码。

您只需定义一个 counter 并检查 while 循环内的附加条件,看 counter 是否等于您作为参数传递的 position。如果满足循环的两个条件中的任何一个,则循环将终止。

这是代码片段:

public void insert(VideoGame s, int position) {
    if (null == list) {
        list = new VideoGameNode(s);
    } else {
        VideoGameNode current = list;
        int counter = 0;
        while (null != current.next && position > counter++)
            current = current.next;
        VideoGameNode newNode = new VideoGameNode(s);
        newNode.next = current.next;
        current.next = newNode;
    }
}