如何为单链接列表实现“添加”方法?

时间:2012-10-22 23:52:59

标签: java

以下是类标题及其下面的字段:

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

非常简单的问题,我对非随机访问数据结构非常新。有人可以帮我解决上面的问题吗?我需要一个基础基础,所以我可以继续实验的其余部分。

3 个答案:

答案 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)

好吧,链表是这样的:

你有头节点,它有一个对下一个节点的引用,它引用了下一个节点,等等。这是我刚绘制的图表:

Linked List Diagram

头部引用了以下节点,但它也包含数据。所以,如果我创建一个字符串链接列表。

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)

我假设添加意味着向该列表添加元素?你有什么尝试?

您必须处理两种情况:

  1. 当列表为空时
  2. 当列表不为空时
  3. 考虑两种情况下你需要做什么。