我正在尝试为视频游戏标题/价格的集合创建自己的链接列表方法。我在添加和删除方法方面取得了一些进展,但是我需要在列表中的某个地方插入一个不仅仅是最后一个。通过使用索引或插入列表中的其他对象。但是,我似乎无法让它发挥作用。
这是我到目前为止所拥有的:
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;
}
}
public class VideoGameNode
{
public VideoGame data;
public VideoGameNode next;
public VideoGameNode(VideoGame s)
{
data = s;
next = null;
}
}
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;
}
}
我有一个测试人员/驱动程序,但它与我现在需要帮助的内容无关。我似乎无法使插入方法正常工作。有没有人有任何想法?
答案 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;
}
}