为链表集合创建插入方法 (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;
}
}
我正在尝试为视频游戏集合创建自己的链表方法 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;
}
}