java listnode实例变量

java listnode实例变量,java,list,linked-list,Java,List,Linked List,我试图理解这个名为append和prepend的方法,但是如果没有一个正确的视觉图像在我的脑海中,我似乎无法理解它。last.next到底是什么意思?为什么一个实例变量会与另一个实例变量卡住?正如您所看到的,这两个类一起工作以形成链表中的listnode。代码如下: 在linkedlist.java类中,代码如下所示: public class LinkedList { /** First node in linked list - dummy node */ private

我试图理解这个名为append和prepend的方法,但是如果没有一个正确的视觉图像在我的脑海中,我似乎无法理解它。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

LinkedList中的每个元素都有数据,以及到下一个元素的链接。 您的LAST实际上是列表中的最后一个元素。但是ListNode仍然需要到下一个ListNode的链接,而下一个ListNode并不存在。解决方法是简单地使last.next为空

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

类似地,对于第一个元素(尽管在本例中,我个人会将其重命名为“beforeFirst”,因为这更清楚地说明了它的用途)

阅读LinkedList上的wikipedia页面:

这是我所在大学关于列表结构的课堂讲稿:

为什么一个实例变量会与另一个实例纠缠在一起 变量


不确定您的意思…

例如,我可以键入last.next。视觉上的真正含义是什么?为什么我可以这么做?谢谢你的信息。现在就看这个!