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

时间:2016-04-07 19:29:40

标签: java methods insert singly-linked-list

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

这是我到目前为止所拥有的:

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

我有一个测试人员/驱动程序,但它与我现在需要帮助的内容无关。我似乎无法使插入方法正常工作。有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

您可以创建一个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;
    }
}