以下是类标题及其下面的字段:
public class SinglyLinkedList <E> implements MiniList <E>
{
protected Entry <E> head = null;
private int size = 0;
我需要为我的实验室实现这个方法,而且我对LinkedLists一无所知:
public boolean add(E element)
{
//method should return true once element is added
//EDIT: I THINK I SOLVED IT:
head.element = element;
return true;
//Does everyone think the two lines above look correct?
}
非常简单的问题,我对非随机访问数据结构非常新。有人可以帮我解决上面的问题吗?我需要一个基础基础,所以我可以继续实验的其余部分。
答案 0 :(得分:1)
最初,您的 head 成员数据设置为null。如果这是一个要求(相对于最初分配它),您需要在add()方法中检查它并在必要时分配它:
if ( head == null )
{
head = new Entry<E>();
head.element = element;
}
如果head不为null,则必须分配一个新条目,并允许现有数据通过让新数据引用它而保留在列表中:
else
{
Entry<E> new_entry = new Entry<E>();
new_entry.element = element;
new_entry.next = head;
head = new_entry;
}
答案 1 :(得分:1)
好吧,链表是这样的:
你有头节点,它有一个对下一个节点的引用,它引用了下一个节点,等等。这是我刚绘制的图表:
头部引用了以下节点,但它也包含数据。所以,如果我创建一个字符串链接列表。
LinkedList<String> groceryList = new LinkedList<String>();
groceryList.add("VEGGIES");
groceryList.add("FRUITS");
头部有数据VEGGIES,然后还有对列表中下一个对象的引用,换句话说就是FRUITS术语,也就是尾部。
假设我们的列表是空的。没有头,没有尾巴,没有数据。我们将头部指定为新条目。它将是列表中的第一个元素,也是访问列表的门户。如果列表不为空,为了添加到列表中,我们必须访问列表中的当前最后一个元素。要做到这一点,我们必须沿着名单前进。
//Some Pseudo Code
Entry current = head;
Entry last = null;
while(Not Done Looping)
{
Entry temp = current.getNext();
if(temp is not null) //We have a reference to another element
{
//We have more list to see
current = temp;
}
else
last = current;
}
这将给我们最后一个条目。然后,为了添加另一个元素,我们只需将最后一个对象的引用设置为我们要添加的条目。
这是它如何运作的要点。现在你只需要根据你的“Entry”对象来实现它。
答案 2 :(得分:0)
我假设添加意味着向该列表添加元素?你有什么尝试?
您必须处理两种情况:
考虑两种情况下你需要做什么。