java listnode实例变量

时间:2011-11-17 03:12:48

标签: java list linked-list

我正在尝试理解这种称为追加和前置的方法,但如果没有正确的视觉图像,我似乎无法理解它。 last.next到底意味着什么?为什么你的实例变量会被另一个实例变量所困?正如您所看到的,两个类一起工作以在链表中形成listnode。继承人代码:

在linkedlist.java类中的

代码如下所示:

public class LinkedList {

    /** First node in linked list - dummy node */
    private ListNode first = new ListNode(null);

    /** Last node in linked list */
    private ListNode last = first;

    /**
     * Appends a String data element to this LinkedList.
     * 
     * @param data
     *            the data element to be appended.
     */
    public void append(String d) {
        // TODO Code here for append
        ListNode node = new ListNode(d);
        last.next =  node;

        last = last.next;
        length++;


        //last = appendSecondNode;
        //first = appendFirstNode;

    } // method append(String)

  /**
     * Prepends (adds to the beginning) a String data element to this
     * LinkedList.
     * 
     * @param data
     *            the data element to be prepended.
     */
    public void prepend(String d) {
        // TODO Code here for prepend
        // assigns to d to the first box of ListNode
        // handle first prepend by making it
        // work exactly like append
        if(length==0){

            append(d);
            return;
        }
        //create new ListNode to prepend
        ListNode  toAddNode = new ListNode(d);
        //set link from the node to add the previous
        // first element so we don't lose the rest of the list
        toAddNode.next = first.next;
        //update the new first node
        first.next = toAddNode;
        // increment the length of the list
        length++;



    } // method append(String)

in another class we have a listnode.java the code looks like this:

// ListNode.java

public class ListNode
{
   public String data;
   public ListNode next;

   public ListNode(String d)
   {
      data = d;
      next = null;
   }  // constructor
}  // class ShortNode

1 个答案:

答案 0 :(得分:0)

LinkedList中的每个元素都有数据,以及指向下一个元素的链接。 你最后确实是列表中的最后一个元素。但ListNode仍然需要链接到下一个不存在的ListNode。解决方案是简单地使last.next为空,即为null。

当你附加一个元素时,你需要告诉LAST实际上有一个新的ListNode将在它之后。因此,您创建last.next = new Node。最后,过去的最后一个元素现在不再是最后一个元素了,所以你需要将last更新为=新节点。

同样对于第一个元素(虽然在这种情况下,我个人会将其重命名为'beforeFirst',因为它更清楚其目的)。

阅读LinkedLists上的维基百科页面: http://en.wikipedia.org/wiki/Linked_list

以下是我大学关于名单结构的讲义: http://undergraduate.csse.uwa.edu.au/units/CITS2200/Resources/LectureNotes/LectureNotes-Topic09-Lists.pdf

  

为什么你可以让一个实例变量卡在另一个实例上   变量

不确定你的意思......